Не удается вызвать resignFirstResponder из textFieldDidBeginEditing? (Айфон)

[myTextField becomeFirstResponder];
[myTextField resignFirstResonder];

Когда я делаю это -(BOOL)textFieldShouldReturn:(UITextField *)textField , это работает. Но когда я использую тот же код внутри -(void)textFieldDidBeginEditing:(UITextField *)textField , он не работает.

Я уверен, что он звонит textFieldDidBeginEditing. У меня есть NSLog внутри метода, и он вызывается.


person Chris    schedule 18.04.2010    source источник
comment
Почему вы хотите, чтобы textField отказался от статуса firstResponder, как только начнется редактирование? Также обратите внимание, что вызов -becomeFirstResponder является излишним — textField должен быть firstResponder, если он получит любое из этих сообщений делегата.   -  person jlehr    schedule 19.04.2010
comment
Потому что я пытаюсь сделать DatePicker вместо клавиатуры.   -  person Chris    schedule 19.04.2010
comment
Я вижу, что дата этого комментария очень старая, но если кто-то ищет подобное поведение - просто назначьте средство выбора даты свойству .inputView текстового поля.   -  person Mathieson    schedule 05.05.2017


Ответы (2)


Прежде чем отказаться от статуса firstResponder, textField выполняет обратный вызов своему собственному методу -canResignFirstResponder, который возвращает NO, если textField в настоящее время находится в сеансе редактирования. Вы можете реализовать метод делегата -textFieldShouldBeginEditing: для возврата NO, если хотите предотвратить начало сеанса редактирования.

person jlehr    schedule 19.04.2010

Это было много лет назад, но мне нужно было что-то идентичное, и этот ответ был в верхней части моих результатов поиска, в итоге я поиграл и придумал это:

[myTextField performSelector:@selector(resignFirstResponder)
                  withObject:nil
                  afterDelay:0
 ];
person Gregory Holden    schedule 26.09.2012