Есть ли способ узнать, что клавиатура 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; } }