I\'m trying to hide the iPad keyboard from a modal view controller but it doesn\'t work. I have tried resignFirstResponder but that doesn\'t have any affect if we are in a m
I just confirmed the problem is indeed UIModalPresentationFormSheet and filed a bug report to apple rdar://8084017
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];
I solved this by resizing a UIModalPresentationPageSheet. See my answer here.
Apparently, there is a new -[UIViewController disablesAutomaticKeyboardDismissal] method that you may override to solve this problem in iOS 4.3.
It was because I was using UIModalPresentationFormSheet. All of the other ones work as expected.... Wasted several hours on that.