resignFirstResponder不工作?

我试图在iPad上隐藏键盘,但我不知道为什么resignFirstResponder不起作用。 但是popToRoot运行良好。

- (BOOL)textFieldShouldReturn:(UITextField *)textField { NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]]; [textField resignFirstResponder]; [self.navigationController popToRootViewControllerAnimated:YES]; return YES; } 

那么你能指导我该怎么做?

这是UIModalPresentationFormSheet字段? 如果是这样,这是一个已知的问题,你不能解除键盘编程,直到视图控制器被解雇。

更新 :根据苹果开发者论坛的这个线程 ,一个可能的解决方法是从实现disablesAutomaticKeyboardDismissal方法的导航控制器子类中呈现工作表视图控件。 所以像这样:

 MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController]; theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet; [self presentModalViewController:theNavigationController animated:YES]; 

要跟踪samvermette的答案,如果它在UIModalPresentationFormSheet中,现在可以重写UIModalPresentationFormSheet方法来获得您所需的行为。 将下面的方法添加到您的类, UITextFieldsUITextViews将响应resignFirstResponder。

 - (BOOL)disablesAutomaticKeyboardDismissal { return NO; } 

你永远不应该有机会发送-resignFirstResponder 。 你应该做的只是发送-endEditing:YES的问题。

你有没有实现UITextFieldDelegate ? 如果你已经实现了那么,那么它应该工作。

(道歉…这是我发布此修补程序的StackOverflow站点上的第四个地方..)

我有XCode 5和iOS 7的巨大问题,试图让屏幕键盘隐藏。

最终,我find了一个非常简单的解决scheme:我只是在我的表单中禁用了UITextFields 。 神奇的是,这足以让屏幕键盘滑开。

更多细节在这里

令人惊讶的是,这甚至适用于Modal UIViewControllers 。 是的,这也让我感到惊讶!