Скрытие UIKeyboard

Я пытаюсь скрыть клавиатуру в своем приложении SplitView (потому что она закрывает часть корневого меню). Однако единственное, что я могу найти, - это как скрыть клавиатуру после использования текстового поля [TextField resignFirstResponder].

Есть ли другой способ скрыть клавиатуру?
В идеале я хотел бы использовать barButtonItem, который отображает меню, в качестве триггера, чтобы скрыть клавиатуру.


person BloonsTowerDefence    schedule 15.08.2012    source источник


Ответы (3)


Использовать это:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
person Steven Fisher    schedule 15.08.2012

Вам необходимо отправить -resignFirstResponder сообщение экземпляру любого элемента пользовательского интерфейса, который в настоящее время имеет статус первого респондента. Итак, если в вашем классе было свойство firstNameTextField, которое соответствует экземпляру UITextField, вам необходимо отправить сообщение этому объекту.

[self.firstNameTextField resignFirstResponder];

person Mark Adams    schedule 15.08.2012
comment
Работает ли он с любым элементом пользовательского интерфейса? Могу ли я использовать UIBarButtonItem? Вся моя проблема в том, что у меня нет конкретного текстового поля, на которое можно было бы его связать. - person BloonsTowerDefence; 15.08.2012
comment
Технически любой экземпляр UIView может стать первым респондентом, поскольку он является подклассом UIResponder, но он вызывает клавиатуру только в том случае, если класс соответствует протоколу UITextInput. Чтобы отключить клавиатуру с помощью UIBarButtonItem, вам необходимо подключить эту кнопку к методу, который вызывает resignFirstResponder в активном текстовом поле. Если вы просто хотите вслепую закончить все редактирование, вы также можете отправить endEditing: в корневое представление, и оно будет проходить через подпредставления и отказываться от первого респондента, у которого оно есть в данный момент. - person Mark Adams; 15.08.2012

resignFirstResponder - способ сделать это. Если у вас есть ситуация, когда ваш firstResponder не настроен как переменная экземпляра (возможно, он сгенерирован), вы можете «получить» свой firstResponder, используя этот ответ. После того, как у вас появится объект первого респондента, просто откажитесь от него!

надеюсь это поможет.

person KDaker    schedule 15.08.2012