Есть ли способ узнать, что клавиатура iOS действительно скрыта (отклонена пользователем)?
Мне нужен способ обнаружить случай, когда пользователь отключает клавиатуру iOS вручную, используя кнопку "клавиатура" на клавиатуре. Я попытался использовать UIKeyboardDidHideNotification
, но быстро обнаружил, что это событие также срабатывает, когда пользователь разбивает клавиатуру, оставляя ее на экране.
Есть ли способ узнать наверняка, что клавиатура действительно была скрыта?
2 ответа:
Чтобы получить решение, мне пришлось немного изменить свою первоначальную реализацию: Я заменил назначение
nil
членуinputView
моего основного представления созданием и уничтожением пользовательского невидимогоUIView<UIKeyInput>
представления для отображения и скрытия клавиатуры соответственно. Это позволило мне переопределить методresignFirstResponder
этого представления, который Всегда вызывается при отставке клавиатуры - либо в обычном, либо в разделенном состоянии, когда пользователь отклоняет клавиатуру с помощью специальной кнопки или когда я удаляю ее программно.
Я считаю, что
UIKeyboardDidHideNotification
отправляется только тогда, когда клавиатура действительно исчезла. Из Apple docs:Опубликовано сразу после увольнения с клавиатуры.
Однако вы также можете посмотреть, является ли какой-либо из ваших входных данных в настоящее время первым ответчиком:
BOOL keyboardUp = NO; for (UIView *view in self.textInputs) { if (view.isFirstResponder) { keyboardUp = YES; break; } }