通过textField.inputView的DatePicker仅在第二次显示(第一次调用常规键盘)

时间:2016-04-09 10:46:20

标签: ios objective-c datepicker keyboard

我在一个页面上使用了四个textField。对于第一个和第二个textFields,我使用常规键盘。 第三个和第四个是时间值 - 我使用编程创建的DatePicker并通过IBAction方法中的textField.inputView设置它。

关键是我的DatePicker仅在第二次显示 - 而第一次调用常规键盘。

只发生一次 - 当我打开页面并第一次点击带有时间值的文本字段时。当我第二次点击这个文本字段时 - 它工作正常(我的日期选择器显示)

我该如何解决?

代码示例:

- (IBAction)wakeUpWeekdaysPressed:(id)sender {
    UIDatePicker *timePicker = [[UIDatePicker alloc] init];
    timePicker.datePickerMode = UIDatePickerModeTime;

    UIToolbar* toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.frame), 44)];
    UIBarButtonItem* doneButton = [[UIBarButtonItem alloc]
                                   initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(weekdaysTimePickerDoneAction:)];
    UIBarButtonItem* cancelButton = [[UIBarButtonItem alloc]
                                     initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(weekdaysTimePickerCancelAction:)];
    UIBarButtonItem* flexibleSpace = [[UIBarButtonItem alloc]
                                      initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
    [toolbar setItems:@[cancelButton, flexibleSpace, doneButton]];
    // toolbar.barStyle = UIBarStyleBlackTranslucent;
    toolbar.translucent = YES;

    [_wakeUpTimeWeekdays setInputView:timePicker];
    [_wakeUpTimeWeekdays setInputAccessoryView:toolbar];
}

1 个答案:

答案 0 :(得分:1)

我用另一种方式解决了这个问题。

DatePicker正在IBAction方法中为文本字段初始化。 主要问题的根本原因是我选择了方法Editing Did End的已发送事件类型。所以我将发送的事件更改为Editing Did Begin

现在它运作正常。谢谢。

enter image description here