iPhone datepicker而不是键盘?

xpe*_*int 34 forms iphone keyboard uidatepicker uitextfield

你会怎么做?

我有一个带有UITextField的表单.当我点击它时,我想显示一个UIDatePicker,而不是默认弹出的默认键盘?请注意,我的表单上还有其他元素.

Joh*_*ool 86

我认为这是一种更正式的方式:

UIDatePicker *datePicker = [[[UIDatePicker alloc] init] autorelease];
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];
datePicker.tag = indexPath.row;
textField.inputView = datePicker;
Run Code Online (Sandbox Code Playgroud)

  • 这工作得非常好,但是如何在选择日期后隐藏日期选择器 (3认同)
  • 检查并查看你的"datePicker"ivar是否为零 (2认同)

小智 9

在.h

UIDatePicker *datePicker;
NSDate *date;
UIToolbar *keyboardToolbar;
Run Code Online (Sandbox Code Playgroud)

在ViewDidLoad中:

if (keyboardToolbar == nil) {
    keyboardToolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 44)];
    [keyboardToolbar setBarStyle:UIBarStyleBlackTranslucent];

    UIBarButtonItem *extraSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];

    UIBarButtonItem *accept = [[UIBarButtonItem alloc] initWithTitle:@"Accept" style:UIBarButtonItemStyleDone target:self action:@selector(closeKeyboard:)];

    [keyboardToolbar setItems:[[NSArray alloc] initWithObjects: extraSpace, accept, nil]];
}

self.txtDate.inputAccessoryView = keyboardToolbar;

datePicker = [[UIDatePicker alloc] init];
datePicker.datePickerMode = UIDatePickerModeDate;
[datePicker addTarget:self action:@selector(datePickerValueChanged:) forControlEvents:UIControlEventValueChanged];

self.txtDate.inputView = datePicker;


- (void)datePickerValueChanged:(id)sender{

date = datePicker.date;

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"dd/MM/YYYY"];


[self.txtDate setText:[df stringFromDate:date]];
}
Run Code Online (Sandbox Code Playgroud)

在storyboard中添加到txtDate - > EditingDidEnd

- (IBAction)establishHour:(id)sender{

hour = hourPicker.date;

NSDateFormatter *hf = [[NSDateFormatter alloc] init];
[hf setDateFormat:@"HH:MM"];

[self.txtHour setText:[hf stringFromDate:hour]];

}
Run Code Online (Sandbox Code Playgroud)

将键盘设置为DatePicker,并创建一个带有按钮的工具栏以接受选择.

  • 要提高帖子的质量,请包含此代码解决问题的方式/原因. (2认同)

Jer*_*iah 5

如果有人愿意,我已经将约翰·库尔的答案转换为快速的方法。我将代码放在viewDidLoad中。

let datePicker = UIDatePicker()
datePicker.datePickerMode = UIDatePickerMode.Date
datePicker.addTarget(self, action: "datePickerValueChanged:", forControlEvents: UIControlEvents.ValueChanged)
textField.inputView = datePicker
Run Code Online (Sandbox Code Playgroud)