Подтвердить что ты не робот

Обнаружение скрытия клавиатуры iPad против внешней клавиатуры?

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

  • Если элемент управления (например, UITextField) программно сбрасывает первый ответчик.
  • Если пользователь нажал кнопку "убрать клавиатуру" в правом нижнем углу.
  • Если пользователь подключается к периферии периферии USB/клавиатуры.

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

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

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

Но как я могу сказать разницу?

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

4b9b3361

Ответ 1

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

Ответ 2

Похоже, вы просто пытаетесь выяснить, когда пользователь закончил редактирование. Вы можете прослушать уведомление 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

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