Я искал через этот сайт, что не смог найти решение проблемы, с которой я сейчас сталкиваюсь. Надеюсь, кто-то может помочь.ResignFirstResponder не отклоняет клавиатуру (iPhone)
Я создал UIAlertView, чтобы пригласить пользователя ввести свое имя в приложении для iPhone.
UIAlertView *enterNameAlert = [[UIAlertView alloc] initWithTitle:@"Enter your name"
message:@"\n\n\n"
delegate:self
cancelButtonTitle:NSLocalizedString(@"Cancel", nil)
otherButtonTitles:NSLocalizedString(@"OK", nil),nil];
UITextField *enterNameField = [[UITextField alloc] initWithFrame:CGRectMake(16, 83, 252, 25)];
enterNameField.keyboardAppearance = UIKeyboardAppearanceAlert;
enterNameField.borderStyle = UITextBorderStyleRoundedRect;
enterNameField.autocorrectionType = UITextAutocorrectionTypeNo;
enterNameField.clearButtonMode = UITextFieldViewModeWhileEditing;
enterNameField.returnKeyType = UIReturnKeyDone;
enterNameField.delegate = self;
[enterNameField becomeFirstResponder];
[enterNameAlert addSubview:enterNameField];
[enterNameAlert show];
[enterNameAlert release];
[enterNameField release];
Я настроить этот ViewController соблюдать UITextFieldDelegate в заголовочном файле, и реализован textFieldShouldReturn:
пытается закрыть клавиатуру, когда пользователь нажмите Готово.
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([textField isFirstResponder]) {
[textField resignFirstResponder];
NSLog(@"text field was first responder");
} else {
[textField becomeFirstResponder];
[textField resignFirstResponder];
NSLog(@"text field was not first responder");
}
NSLog(@"textfieldshouldreturn");
return YES;
}
В отладчике, я подтверждаю, что этот метод вызывается успешно, когда я нажимаю на кнопку Готово, с TextField быть первым ответчиком в то время. Однако клавиатура не исчезает, но маленький clearButton уходит. Понятно, что textField больше не является первым ответчиком, потому что, когда я снова нажимаю кнопку «Готово», ничего не вызывается. Я просто хочу убрать клавиатуру с помощью кнопки «Готово». Может ли кто-нибудь предложить решение? Миллион спасибо.
Что произойдет, если вы установите текстовое поле как свойство в своем контроллере просмотра, тем самым гарантировав, что вы его сохранили даже после того, как предупреждение было уволено? Мне интересно, возможно ли, что он освобождается до того, как цикл событий приблизится к отправке сообщения resignFirstResponder или чего-то странного. P.S. Мы работали вместе? – clozach