2015-04-11 1 views
0

Я обновил версию iOS до 8.2, но теперь столкнулся с некоторыми проблемами с UIDatePicker и UITextfield клавиатурой. В iOS 8 UIActionsheet не поддерживается, поэтому я изменил свой код, чтобы показать дату Picker, но теперь клавиатура не скрывается при открытии сборщика. вот мой код DatePicker:Как скрыть клавиатуру при открытии UIDatePicker в iOS 8

- (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]; 
} 

но клавиатура не получает шкурку.

+0

Способ создания метода выбора вызова после некоторой задержки (время будет таким же, как для скрытия клавиатуры) – nerowolfe

ответ

4

После некоторой задержки вы должны вызвать создание даты. С использованием кода

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

это решит вашу проблему.

Примечания: - Но если вы используете выбор даты как тип ввода для вашего текстового поля, то вы должны просто создать Datepicker нагрузки viewDid и установить его в качестве inputView для вашего текстового поля ->[textField setInputView:yourPicker]; и он будет обрабатывать все. Он создаст ваш выбор даты на textField, а не keyBoard.

+1

'[textField setInputView: yourPicker];' очень полезно! благодаря –

0

Вы показываете выбор даты в методе textFieldDidBeginEditing, а затем, когда вы показываете клавиатуру?

 Смежные вопросы

  • Нет связанных вопросов^_^