このサイトを検索したところ、現在直面している問題の解決策が見つかりませんでした。誰かが助けてくれることを願っています。
ユーザーにiPhoneアプリに名前を入力するように求めるUIAlertViewを作成しました。
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];
ヘッダーファイルのUITextFieldDelegateに準拠するようにこのviewControllerを設定し、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が最初のレスポンダーではなくなったことは明らかです。[完了]ボタンでキーボードを閉じたいだけです。誰かが解決策を提供できますか?百万ありがとう。