我尝试在iPad上隐藏键盘,但我不知道为什么resignFirstResponder不起作用。 但popToRoot运作良好。
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
NSString *desc = [NSString stringWithFormat:@"%@",[descTF text]];
[textField resignFirstResponder];
[self.navigationController popToRootViewControllerAnimated:YES];
return YES;
}
所以,你能指导我,我该怎么办?
答案 0 :(得分:19)
此字段是否在UIModalPresentationFormSheet
内?如果是这样,那么在视图控制器被解除之前,您无法以编程方式解除键盘问题。
更新:根据Apple Developer论坛的this thread,可能的解决方法是从实现disablesAutomaticKeyboardDismissal方法的导航控制器子类内部显示工作表视图控件。如下所示:
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
CustomNavigationController *navController = [[CustomNavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];
答案 1 :(得分:7)
要跟进samvermette的回答,如果它在UIModalPresentationFormSheet
内,您现在可以覆盖disablesAutomaticKeyboardDismissal
方法以获得您想要的行为。将以下方法添加到您的班级,UITextFields
和UITextViews
将响应resignFirstResponder。
- (BOOL)disablesAutomaticKeyboardDismissal {
return NO;
}
答案 2 :(得分:1)
您永远不应该有机会发送-resignFirstResponder
。您应该做的只是将-endEditing:YES
发送到相关视图。
答案 3 :(得分:0)
您是否实施了UITextFieldDelegate
?如果你已经实现了那个,那么它应该可以工作。
答案 4 :(得分:0)
(道歉......这是StackOverflow网站上第四个我发布此修复程序的地方..)
我在XCode 5& amp; iOS 7,试图隐藏屏幕键盘。
最终,我找到了一个非常简单的解决方案:我刚刚在表单中禁用了UITextFields
。奇怪的是,这足以让屏幕键盘滑落。
更多详情here
令人惊讶的是,这甚至适用于Modal UIViewControllers
。是的,它让我感到惊讶!!