我正在尝试从模态视图控制器隐藏iPad键盘,但它不起作用。我已经尝试过resignFirstResponder但是如果我们在模态视图控制器中那没有任何影响。我在非模态UINavigationController中尝试了resignFirstResponder,它具有完全相同的UIViewController,并且键盘正确隐藏。
有谁知道如何解决这个问题?
感谢。
[更新]看起来我的代码有问题,因为resignFirstResponder确实有效(我做了一个简单的测试用例而不是使用我的代码)。但我仍然不知道问题是什么。
答案 0 :(得分:34)
显然,有一种新的-[UIViewController disablesAutomaticKeyboardDismissal]
方法可以覆盖以解决iOS 4.3中的这个问题。
答案 1 :(得分:14)
这是因为我使用的是UIModalPresentationFormSheet。所有其他的都按预期工作......浪费了几个小时。
答案 2 :(得分:5)
这是一个完全痛苦的发现。似乎是iOS中较差的API设计之一。非常感谢@ 0xced和@manicaesar的答案。
这是我对未来开发人员的综合答案,他们不停地靠在墙上。
如果它是单个视图控制器,只需覆盖disablesAutomaticKeyboardDismissal
并返回NO。
如果它是模态中的导航控制器,请创建自己的UINavigationController子类,如下所示:
在.h ......
@interface MyNavigationController : UINavigationController @end
在.m ....
@implementation MyNavigationController #pragma mark - #pragma mark UIViewController - (BOOL)disablesAutomaticKeyboardDismissal { return NO; } @end
在显示模态视图控制器的代码中。
UIViewController *someViewController = [[UIViewController alloc] init]; MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:someViewController]; navController.modalPresentationStyle = UIModalPresentationFormSheet; navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; [self presentModalViewController:navController animated:YES];
答案 3 :(得分:3)
我刚刚确认问题确实是UIModalPresentationFormSheet并向苹果公司提交了一份错误报告:// 8084017
答案 4 :(得分:3)
我通过调整UIModalPresentationPageSheet的大小来解决这个问题。请参阅我的回答here。