5

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

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


    return YES;
}

所以你能指导我该怎么做吗?

4

5 回答 5

19

该字段是否在 a 内UIModalPresentationFormSheet?如果是这样,这是一个已知问题,您无法以编程方式关闭键盘,直到视图控制器被关闭。

更新:根据Apple Developer Forums 的此线程,可能的解决方法是从实现 disablesAutomaticKeyboardDismissal 方法的导航控制器子类内部呈现工作表视图控件。所以像:

MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];
于 2011-07-28T04:40:54.560 回答
7

要跟进 samvermette 的回答,如果它在 a 内,UIModalPresentationFormSheet您现在可以覆盖该disablesAutomaticKeyboardDismissal方法以获得您想要的行为。将以下方法添加到您的类中UITextFieldsUITextViews并将响应 resignFirstResponder。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
于 2012-03-17T23:53:43.023 回答
1

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

于 2011-07-28T04:48:01.247 回答
0

(抱歉……这是我在 StackOverflow 网站上发布此修复程序的第四位……)

我在使用 XCode 5 和 iOS 7 时遇到了很大的问题,试图隐藏屏幕键盘。

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

更多细节在这里

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

于 2014-04-22T13:49:36.513 回答
0

你实施了UITextFieldDelegate吗?如果你已经实现了这个,那么它应该可以工作。

于 2011-07-28T04:17:47.187 回答