iOS UITextField- отклонение пользовательского ввода ViewView

Я использую собственный inputView для некоторого текстового поля, однако когда я вызываю 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 ответа

Вместо звонка 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)
    }
}

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

- (BOOL)disablesAutomaticKeyboardDismissal
{
    return NO;
}
Другие вопросы по тегам