Ant*_*ony 7 iphone keyboard uitextfield uialertview dismiss
我在这个网站上搜索过,我找不到解决我现在面临的问题的方法.希望有人能提供帮助.
我创建了一个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];
Run Code Online (Sandbox Code Playgroud)
我已经设置了这个viewController以符合头文件中的UITextFieldDelegate,并实现textFieldShouldReturn:了在用户点击Done时尝试关闭键盘.
- (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;
}
Run Code Online (Sandbox Code Playgroud)
在调试器中,我确认当我点击Done按钮时成功调用此方法,textField是当时的第一个响应者.然而,键盘并没有消失,但是小小的clearButton消失了.显然textField不再是第一个响应者,因为当我再次单击Done按钮时,不会调用任何内容.我只是想用Done按钮关闭键盘.有人可以提供解决方案吗?百万谢谢.
小智 6
首先,您需要定义您的enterNameAlertin接口标头.然后使用下面的代码.
- (void)viewDidLoad {
[super viewDidLoad];
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;
[enterNameAlert addSubview:enterNameField];
[enterNameField becomeFirstResponder];
[enterNameAlert show];
[enterNameField release];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
if ([textField isFirstResponder]) {
[textField resignFirstResponder];
[enterNameAlert dismissWithClickedButtonIndex:1 animated:YES];
[enterNameAlert release];
NSLog(@"text field was first responder");
} else {
[textField becomeFirstResponder];
[textField resignFirstResponder];
NSLog(@"text field was not first responder");
}
NSLog(@"textfieldshouldreturn");
return YES;
}
Run Code Online (Sandbox Code Playgroud)