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;
}