Повесть о клавиатуре
Иногда бывает необходимо узнавать о том, когда клавиатура собирается появиться или спрятаться (например, когда текстовые поля находятся в таблице и приходится уменьшать высоту таблицы так, чтобы она вся была над клавиатурой). Для этого есть 4 типа уведомлений с такими именами:
- UIKeyboardWillShowNotification — клавиатура должна появится,
- UIKeyboardDidShowNotification — клавиатура появилась,
- UIKeyboardWillHideNotification — клавиатура должна спрятаться,
- UIKeyboardDidHideNotification — клавиатура наконец спряталась.
Так вот…
Если, например, просто вызвать метод resignFirstResponder у объекта класса UITextField, то все хорошо, и мы получаем оба уведомления — UIKeyboardWillHideNotification и UIKeyboardDidHideNotification. Но, если в момент редактирования какого-то из текстовых полей будет осуществлена установка курсора в другое текстовое поле, то, как выяснилось, уведомление UIKeyboardDidHideNotification не приходит, при том что приходит UIKeyboardWillHideNotification, а затем UIKeyboardWillShowNotification и UIKeyboardDidShowNotification. Возможно, это вызвано тем, что клавиатура не успевает спрятаться до того, как снова начинает появляться :) Но, в любом случае, нужно иметь это ввиду, если вы собираетесь использовать эти уведомления.