resignFirstResponder doesn't work on iPad
在 iPad 上,用 modalPresentationStyle = UIModalPresentationFormSheet
方式推出一个 viewController,这时这个 viewController 不会响应 resignFirstResponder
,其他样式的 modalPresentationStyle 没有问题。苹果一个开发在开发者论坛说这是个 feature,不是 bug,devforums.apple.com
Was your view by any chance presented with the UIModalPresentationFormSheet style? To avoid frequent in-and-out animations, the keyboard will sometimes remain on-screen even when there is no first responder. This is not a bug.
就算不是 bug 也很恼人,有人给出了解决方法 devforums.apple.com。新建一个 UINavigationController category,禁掉 disablesAutomaticKeyboardDismissal
:
- (BOOL)disablesAutomaticKeyboardDismissal
{
return NO;
}
然后把 viewController 挂在 UINavigationController 下即可:
MyViewController *myViewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:myViewController];
theNavigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:theNavigationController animated:YES];
SO 参考:
Was this page helpful?