2013年6月20日木曜日

iPadでresignFirstResponderが機能しない



iPadでUIModalPresentationFormSheetを使ってModal Viewを表示した場合、UITextFiledのタップでキーボードを表示したあと、textFieldShouldReturn:でresignFirstResponderを行ってもキーボードが消えないという現象があります。
続けて入力を行う可能性を考慮し、ひとつのコントロールがresignFirstResponderしてもいちいちキーボードを隠さないという仕様だそうです。
それでも直ぐにキーボードを消したい場合はUIViewControllerに次のようなコードを追加します。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}

iPadでは画面構成によってはUIViewControllerがいくつも登場するため、どれにしかければ有効なのか悩まされました。
Modal Viewの場合はそれを表示するUINavigationControllerをサブクラス化し、それに上記メソッドを実装すると解決します。

参照:resignFirstResponder Don't work?

0 件のコメント: