Обнаружение скрытия клавиатуры iPad по сравнению с подключением к внешней клавиатуре? - PullRequest
17 голосов
/ 20 мая 2010

Виртуальная клавиатура iPad исчезнет при одном из (как минимум) следующих трех обстоятельств:

  1. Если элемент управления (скажем, UITextField) программно подает в отставку первый респондент.
  2. Если пользователь нажимает кнопку «отклонить клавиатуру» в правом нижнем углу.
  3. Если пользователь подключается к периферийной док-станции USB / клавиатуры.

Во всех случаях я получаю UIKeyboardWillHideNotification.

Проблема в том, что первые два случая, как правило, эквивалентны - другими словами, пользователь завершил редактирование текстового поля. Но в третьем случае текстовое поле все еще редактируется, просто из другого источника ввода.

Проблема заключается в обнаружении разницы между случаями 2 и 3. Все, что я получаю в обоих случаях, это UIKeyboardWillHideNotification. В случае 2, я обычно хочу также заблокировать элемент управления редактирования и зафиксировать значение. В случае 3 я обычно хочу ничего не делать и разрешить редактирование продолжить.

Но как я могу определить разницу?

Кажется, что приложение Apple Pages способно различить это при переименовании заголовка документа.

Ответы [ 2 ]

2 голосов
/ 03 июня 2010

Похоже, вы просто пытаетесь понять, когда пользователь завершит редактирование. Вы можете прослушать уведомление UITextFieldTextDidEndEditingNotification для случаев 1 и 2.

Гораздо более простым решением было бы просто проверить editing свойство UITextField, чтобы определить, должно ли оно все еще редактироваться или нет? У меня нет физической клавиатуры, поэтому у меня нет возможности проверить это. Я просто догадываюсь.

Вот ссылка на документацию по этому свойству: http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UITextField_Class/Reference/UITextField.html#//apple_ref/occ/instp/UITextField/editing

Мне очень любопытно узнать, работает это или нет ...:)

2 голосов
/ 20 мая 2010

Я бы посмотрел на UIKeyboardBoundsUserInfoKey, переданный с уведомлением. Физическая клавиатура, вероятно, имеет пустые границы.

...