0

我已将 iOS 版本更新到 8.2,但现在面临 UIDatePicker 和 UITextfield 键盘隐藏的一些问题。在 iOS 8 中 UIActionsheet 不受支持,因此我更改了代码以显示日期选择器,但现在选择器打开时键盘没有隐藏。这是我的 datepicker 代码:

- (void)textFieldDidBeginEditing:(UITextField *)textField
{
[textField resignFirstResponder];

    UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,self.view.bounds.size.width, self.view.bounds.size.height)];
    [myView setBackgroundColor:[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.5]];
    [self.view addSubview:myView];

    UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height - 244, self.view.bounds.size.width, 44)];

    UIBarButtonItem *done = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(dismissActionSheet)];
    toolbar.items = @[[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], done];
    toolbar.barStyle = UIBarStyleBlackOpaque;
    [self.view addSubview:toolbar];

   UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, self.view.bounds.size.height - 200, 0, 0)];
    datePicker.datePickerMode = UIDatePickerModeDate;
    datePicker.hidden = NO;
    datePicker.date = [NSDate date];
    datePicker.maximumDate = [NSDate date];
    [datePicker addTarget:self
                   action:@selector(LabelChange:)
         forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:datePicker];
}

但键盘没有隐藏。

4

2 回答 2

2

You should call the datePicker creation after some delay. By using code

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //Your code here
    });

this will solve your problem.

NOTE:- But If you are using the date picker as input type for your text field then you should simply create your datePicker in viewDid load and set it as the inputView for your text field -> [textField setInputView:yourPicker]; and it will handle every thing. It will create your date picker on textField tap not the keyBoard.

于 2015-04-11T08:08:33.517 回答
0

您在“textFieldDidBeginEditing”方法中显示日期选择器,然后在显示键盘时?

于 2015-04-11T14:45:40.157 回答