How to HIDE the iPad keyboard from a MODAL view controller? How to HIDE the iPad keyboard from a MODAL view controller? objective-c objective-c

How to HIDE the iPad keyboard from a MODAL view controller?


It was because I was using UIModalPresentationFormSheet. All of the other ones work as expected.... Wasted several hours on that.


This was a total pain to find. Seems like one of the poorer API designs in iOS. Much appreciation to @0xced and @manicaesar for the answers.

Here's my consolidated answer for future devs who are stuck beating their head against the wall.

If it's a single view controller, just override disablesAutomaticKeyboardDismissal and return NO.

If it's a navigation controller in a modal, create your own UINavigationController subclass like so:

In .h...

@interface MyNavigationController : UINavigationController@end

In .m....

@implementation MyNavigationController#pragma mark -#pragma mark UIViewController- (BOOL)disablesAutomaticKeyboardDismissal {    return NO;}@end

In your code that shows a modal view controller.

UIViewController *someViewController = [[UIViewController alloc] init];MyNavigationController *navController = [[MyNavigationController alloc] initWithRootViewController:someViewController];navController.modalPresentationStyle = UIModalPresentationFormSheet;navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;[self presentModalViewController:navController animated:YES];