iPhone: почему отправка сообщения resignFirstResponder удаляет клавиатуру?

Это вопрос из двух частей:

1) Зачем нам вообще нужно делать первого респондента UITextField? Он будет работать, даже если это не первый респондент.

2) Почему уходит клавиатура при отправке сообщения resignFirstResponder? Удаляет ли метод также клавиатуру как побочный эффект? Почему в UITextView нет отдельного метода для удаления клавиатуры?


person euphoria83    schedule 07.01.2011    source источник


Ответы (2)


Why do you want the resignFirstResponder message not to remove the keyboard?

  1. UITextField становится активным (курсор внутри текстового поля мигает, и появляется клавиатура) только тогда, когда вы отправляете сообщение beginFirstResponder или щелкаете внутри текстового поля.

  2. Сообщение resignFirstResponder делает текстовое поле неактивным (курсор удаляется из текстового поля). Если курсора нет в текстовом поле, зачем вам там клавиатура? Куда вы отправите этот текст, набранный на клавиатуре? Вот почему клавиатура автоматически исчезает, когда текстовое поле отказывается от функции первого респондента.

    resignFirstResponder - это метод в UITextView, который указывает ему удалить клавиатуру.

person EmptyStack    schedule 07.01.2011
comment
спасибо, это помогает мне понять, как службы быстрого реагирования теперь работают намного лучше. - person emilebaizel; 21.11.2013

вы также можете отправить resignFirstResponder в TextView, но на самом деле вы могли бы спросить, что нет метода делегата для текстового просмотра, такого как тот, который существует для текстового поля, то есть textFieldShouldReturn.
Итак, отвечая на ваш вопрос, поскольку текстовое представление является многострочным, нажатие клавиши возврата занимает курсор на следующую строку. Вам нужно явно разместить кнопку «Готово» в отдельном представлении над клавиатурой, нажав на нее, вы можете отправить сообщение resignFirstResponder в текстовое представление.

person Javal Nanda    schedule 07.01.2011