Здравствуйте!
— Не хотите ли войти
2
ответа

спрятать клавиатуру

Добрый день.
Ни как не могу понять как спрятать клавиатуру в следующей ситуации:
есть некоторое количество текстовых полей UITextField(view controller является делегатом, по клику на Done клавиатура прячется, тут все нормально), а так же есть кнопка UIButton. По клику на кнопку осуществляется какое то действие, потом осуществляется переход к другому view (в navigation controller добавляется новый view controller). Так вот если я заполняю какое то поле, потом нажимаю на UIButton и перехожу к новому view controller, то клавиатура остается открытой. Ставить [textField resignFirstResponder]; на все текстовые поля при переходе к новому контроллеру как то не логично, поэтому вопрос: как спрятать открытую клавиатуру (если она открыта) при клике на UIButton?

15 мая 2010

Ответы

Можно сделать наследника UITextField, хватать там получение фокуса и запоминать, в каком поле сейчас фокус. Потом посылать resign ему.

Но вообще скорее всего можно просто форсированно проставить фокус другому элементу. При потере фокуса клавиатура должна пропасть.

15 мая 2010
ну как бы по клику на uibutton мне думается фокус и так у поля пропадает, это по моей логике ) но что то в реале не так ...
mscoder
Не факт :) Кнопка может не получать фокус.
alex
на форуме еще вариант подсказали, "запоминать" какое поле начали редактировать, приклике на кнопку проверять его isFirstResponder и если да, то resignFirstResponder
mscoder
Да, я примерно это и предложил, более универсально только.
alex
for (UIView *childView in [self.view subviews]) {
    if ([childView isFirstResponder]) {
        [childView resignFirstResponder];
    }
}

есть способ красивее?

15 мая 2010
Зарегистрируйтесь или войдите, чтобы добавить свой комментарий или ответ на вопрос.
© 2009-2012, ООО «Инру»
Вход
Имя пользователя:
Пароль:
Или…
Twi
Отмена
Войти
Восстановить забытый пароль…