UIDatePicker заменяет клавиатуру только на последней Uitableviewcell

У меня есть табличное представление, в котором пользователь может добавить новую строку, содержащую два поля UITextField. Пользователь может добавить дату в каждое текстовое представление (или не добавлять дату, оставив ее пустой) с помощью UIDatePicker. Как только процесс будет завершен и все будет сохранено, пользователь сможет перейти к любой строке и обновить даты в этой строке. Проблема в том, что любая строка, предшествующая самой последней созданной строке, показывает обычную клавиатуру только тогда, когда пришло время редактировать. Кажется, мне не удается отобразить указатель даты, кроме последней сохраненной строки. Есть мысли о том, почему это происходит?

Вот как я настроил datepicker:

-(void)showDatePicker{
    _datePicker = [[UIDatePicker alloc] init];

    UIToolbar *toolbar = [[UIToolbar alloc]init];
    [toolbar sizeToFit];

    UIBarButtonItem *doneButton = [[UIBarButtonItem alloc]initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(done)];

    doneButton.tintColor = [UIColor whiteColor];

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

    toolbar.translucent = YES;
    toolbar.barTintColor = [UIColor colorWithRed:8/255.0 green:46/255.0 blue:46/255.0 alpha:1];

    [toolbar setItems:[NSArray arrayWithObjects:flexibleSpaceLeft,doneButton ,nil]];

    [_readDateCell.startDateTextfield setInputAccessoryView:toolbar];
    [_readDateCell.finishDateTextfield setInputAccessoryView:toolbar];

    [_datePicker setDatePickerMode:UIDatePickerModeDate];

    [_readDateCell.startDateTextfield setInputView:_datePicker];
    [_readDateCell.finishDateTextfield setInputView:_datePicker];
}

Функция вызывается в двух местах - когда текстовое поле начинает редактирование и когда создается новая строка:

-(void)textFieldDidBeginEditing:(UITextField *)textField {
    [self showDatePicker];
}

-(void)addNewRow {
    [self showDatePicker];
}

person IWannaLearn    schedule 21.07.2018    source источник


Ответы (1)


Если вы устанавливаете представление ввода для своего текстового поля, тогда нет необходимости вызывать showDatePicker в методе делегата didBeginEditing для UITextField.

Затем вам нужно добавить код datePicker в свой метод viewDidLoad. И в cellForRowAtIndexPath вам нужно установить inputAccessory и inputView

person shivi_shub    schedule 22.07.2018
comment
Казалось бы, это имеет смысл, но когда я комментирую showDatePIcker в didBeginEditing, datePicker вообще не отображается, даже в последней строке. Спасибо за предложение. - person IWannaLearn; 22.07.2018
comment
Затем вам нужно добавить код datePicker в свой метод viewDidLoad. И в cellForRowAtIndexPath вам нужно установить inputAccessory и inputView - person shivi_shub; 22.07.2018
comment
Это второе предложение сработало для меня. Спасибо за это! - person IWannaLearn; 22.07.2018