我在这个网站上搜索了一下,没找到解决我现在面临问题的方法。希望有人能帮忙。
我在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的要求,并实现了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是第一个响应者。然而,键盘没有消失,但清除按钮已经消失了。很明显,textField不再是第一个响应者,因为当我再次点击Done按钮时,没有任何东西被调用。我只想用Done按钮隐藏键盘。请问有人可以提供解决方案吗?非常感谢。