从导航控制器弹出viewcontroller时键盘不会退出
问题描述:
我在退出键盘时遇到问题。我在导航控制器中有一个tableViewController
,并且在选择一个单元格时将不同的视图控制器推送到导航控制器。在视图控制器我已经分配了一个文本框作为第一个响应,这样的键盘只要视图 - 控制推显示出来,并同时弹出的视图 - 控制从导航控制器弹出viewcontroller时键盘不会退出
- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
[self.navigationController popViewControllerAnimated:YES];
}
- (void)viewWillDisappear:(BOOL)animated{
[self.textField resignFirstResponder];
}
这是工作正常时,键盘辞职。但再次当我推动相同的视图控制器,当我弹出它键盘不辞职。它阻塞了tableViewController的视图。
答
我有同样的问题比相同的上下文(UINavigationController,UIAlertView,UITextField或UITextView)。
我通过执行后台弹出并取出resignFirstResponder调用(viewWillDisappear方法在你的文件)这样轻松解决了这个问题:
-(void)popCurrentView {
[self.navigationController popViewControllerAnimated:YES];
}
-(void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (alertView.cancelButtonIndex != buttonIndex) {
[self performSelectorInBackground:@selector(popCurrentView) withObject:nil];
}
}
+2
您不应该影响后台线程中的UI – 2011-09-20 03:56:18
一些猜测: 1.你的文本框实际上不是第一响应者 2.您没有将textField连接到插座并且它是零。 如何在viewWillDisappear中使用断点以确保它被调用,并确保self.textField确实是您的想法。 – 2010-07-31 16:53:49
嗨Ron ... 我检查了textField是否是使用代码[textField isFirstResponder]的第一个响应者,并且这返回YES。 [textField resignFirstResponder]也会在第二次返回YES时弹出视图控制器但键盘没有隐藏。 – user347161 2010-08-02 11:15:57