клавиатура не закрывается на UITextField

Это может показаться вопросом новичка, но я новичок в разработке iOS.

Платформа: iPad

У меня есть UITableView с UITextField, скажем, их два. При нажатии на первую виртуальную клавиатуру должна появиться, но когда пользователь нажимает на второй UITextField, виртуальная клавиатура должна быть скрыта и должно отображаться окно выбора данных.

Итак, вот как я это сделал.

-(void) textFieldDidBeginEditing:(UITextField *)textField {
    if (textField.tag == PICKER_VIEW_TAG) {
        [textField resignFirstResponder];
    } else {
        ...
    }
}

-(void) textFieldDidEndEditing:(UITextField *)textField
{
    if (textField.tag != PICKER_VIEW_TAG) {
        ...
    }
}

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    if (textField.tag == PICKER_VIEW_TAG) {
        [self countriesPickerView];
    }
    return YES;
}

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
    if (textField.tag == PICKER_VIEW_TAG) {
        [textField resignFirstResponder];
    } else {
        ... 
    }
    return YES;
}

Итак, теперь вопрос: когда я впервые нажимаю на первое поле UITextField, он отображает клавиатуру, но когда я переключаюсь на второй, он не скрывает его. Почему ? и как это решить?

ОБНОВЛЕНИЕ: соответствующее текстовое поле не выбирается, но происходит отставка, верно? но клавиатура не спрятана ... почему так происходит?


person deimus    schedule 05.12.2011    source источник
comment
Вы установили делегат своих текс-полей и убедились, что методы делегата вызываются? textfield.delegate = self;   -  person matsr    schedule 05.12.2011


Ответы (2)


Проблема заключается в вашем textFieldShouldReturn. Если вы хотите, чтобы он завершил действие, позвольте ему вернуться при увольнении первого респондента.

[textField resignFirstResponder];
return YES;
person Bill Burgess    schedule 05.12.2011
comment
Обновленный код по-прежнему имеет тот же эффект, после того как клавиатура появилась на первом UITextField, когда я нажимаю на второй, клавиатура не скрывается. - person deimus; 05.12.2011
comment
Я предполагаю, что вы добавили свой UITextFieldDelegate в файл заголовка, чтобы он знал, как вызывать эти переопределенные методы? - person Bill Burgess; 05.12.2011
comment
конечно, я добавил это в шапку - person deimus; 05.12.2011
comment
Дело в том, что я хочу, чтобы клавиатура была скрыта, когда я нажимаю на определенный UITextField, неважно, должен ли он возвращать то, что возвращается ... - person deimus; 05.12.2011
comment
Попробуйте отказаться от этого в своем shouldBeginEditing. если (textField == yourTextField) [yourTextField resignFirstResponder]; - person Bill Burgess; 05.12.2011
comment
Объекты не должны так сравниваться ... Однако я попытался также отказаться от textFeild в shouldBeginEditing ... но проблема smae ... - person deimus; 06.12.2011

Установите свойство inputView на UITextField, чтобы отображать представления, отличные от клавиатуры, для приема ввода. В этом случае вы должны установить inputView текстового поля как экземпляр UIDatePicker. Средство выбора будет отображаться автоматически с той же анимацией клавиатуры, и вы сможете удалить кучу кода. Выиграть / выиграть.

person Mark Adams    schedule 06.12.2011