resignFirstResponderしてるのにキーボードが閉じない!
iPadで、UIModalPresentationFormSheetなモーダルView内では、キーボードを閉じれなくなります。
UIViewControllerのdisablesAutomaticKeyboardDismissal値が、
UIModalPresentationFormSheetの場合に、YESが返って、キーボード閉じれません状態になっている。
というのが、
UIViewController Class ReferenceのdisablesAutomaticKeyboardDismissalに書いてあった。
閉じれるようにするには、対象のUIViewControllerのサブクラスで、
disablesAutomaticKeyboardDismissalをオーバーライドして、NOを返しておけばいいようだ。
- (BOOL)disablesAutomaticKeyboardDismissal { return NO; }
ipad – Modal Dialog Does Not Dismiss Keyboard – Stack Overflow
検索したら見つかったこちらを参考にしたのだけど、
ここに紹介のある、以下のコードがよさそうだったので、結局こっちにした。
これを対象のUIViewControllerソースの一番上にでも書いておくとOK
@implementation UINavigationController (DelegateAutomaticDismissKeyboard) - (BOOL)disablesAutomaticKeyboardDismissal { return [self.topViewController disablesAutomaticKeyboardDismissal]; } @end
UIModalPresentationFormSheetとなっているのがUINavigationControllerなので、そのUINavigationControllerのdisablesAutomaticKeyboardDismissalを聞かれた時に、ナビのtopViewController(resignしようとかしてるView)のdisablesAutomaticKeyboardDismissal値を返している。
そのViewはUIModalPresentationFormSheetではないので、標準値が返り、キーボードを閉じれる状態となると。
読みづらくてすみません!