iOS UITextField - отклонение пользовательского ввода ViewView - PullRequest
7 голосов
/ 19 февраля 2011

Я использую настраиваемое представление ввода для некоторого текстового поля, однако, когда я вызываю resignFirstResponder для текстового поля, настраиваемое представление ввода не отклоняет ... какие-либо предложения?

UITextField *f=[[UITextfield alloc] init];
 UIView *view=[[UIView alloc] initWithFrame..];
   [f setInputView:view]; //random example of how to set a textfields input view to a custom view

После некоторых исследований эта проблема возникает только при работе с viewController, который представлен в модальном представлении ... в остальном работает нормально ...

Спасибо

-Daniel

Ответы [ 2 ]

7 голосов
/ 30 августа 2011

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

endEditing: принимает логический флаг в качестве параметра. Если установлено, это заставит первого респондента подать в отставку; в противном случае вы можете позволить ему сохранять фокус (например, если ввод недействителен). Для UITextField это определяется методом shouldEndEditing: делегата.

В общем, хороший шаблон для использования:

- (void)saveAction:(id)sender
{
    if ([self.view endEditing:NO]) {
        NSString *text = self.textField.text;
        // save text, login, do whatever
    } else {
        // show an alert (or rely on whatever refused to resign to inform the user why)
    }
}
4 голосов
/ 02 июня 2012

Если вы используете модальное представление, обязательно включите автоматическое отключение клавиатуры. Добавьте этот код к вашему контроллеру представления:

- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...