从导航控制器弹出viewcontroller时键盘不会退出

问题描述:

我在退出键盘时遇到问题。我在导航控制器中有一个tableViewController,并且在选择一个单元格时将不同的视图控制器推送到导航控制器。在视图控制器我已经分配了一个文本框作为第一个响应,这样的键盘只要视图 - 控制推显示出来,并同时弹出的视图 - 控制从导航控制器弹出viewcontroller时键盘不会退出

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
    [self.navigationController popViewControllerAnimated:YES]; 

} 

- (void)viewWillDisappear:(BOOL)animated{ 
    [self.textField resignFirstResponder]; 
} 

这是工作正常时,键盘辞职。但再次当我推动相同的视图控制器,当我弹出它键盘不辞职。它阻塞了tableViewController的视图。

+0

一些猜测: 1.你的文本框实际上不是第一响应者 2.您没有将textField连接到插座并且它是零。 如何在viewWillDisappear中使用断点以确保它被调用,并确保self.textField确实是您的想法。 – 2010-07-31 16:53:49

+0

嗨Ron ... 我检查了textField是否是使用代码[textField isFirstResponder]的第一个响应者,并且这返回YES。 [textField resignFirstResponder]也会在第二次返回YES时弹出视图控制器但键盘没有隐藏。 – user347161 2010-08-02 11:15:57

我有同样的问题比相同的上下文(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