Это была полная боль, чтобы найти. Похоже, один из худших дизайнов API в iOS. Большое спасибо @ 0xced и @manicaesar за ответы.
Вот мой сводный ответ для будущих разработчиков, которые застряли, бьются головой о стену.
Если это один контроллер вида, просто переопределите disablesAutomaticKeyboardDismissal
и верните NO.
Если это модальный контроллер навигации, создайте свой собственный подкласс UINavigationController, например:
В .ч ...
@interface MyNavigationController : UINavigationController
@end
в .м ....
@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];