【发布时间】:2011-03-21 17:38:45
【问题描述】:
我搜索了这个网站,但找不到解决我现在面临的问题的方法。希望有人能帮忙。
我创建了一个 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 消息或类似的奇怪消息之前被释放。附:我们以前一起工作吗?
标签: iphone keyboard uitextfield uialertview dismiss