2012-08-15 9 views
6

SplitViewアプリケーションでキーボードを隠そうとしています(ルートメニューの一部を覆うため)。しかし、私が見つけることができる唯一のことは、テキストフィールドが[TextField resignFirstResponder]で使用された後にキーボードを隠す方法です。UIKeyboardを非表示にする

キーボードを隠す方法はありますか?
理想的には、メニューを表示するbarButtonItemをキーボードを非表示にするトリガーとして使用したいと考えています。

答えて

12

使用この:

[[[UIApplication sharedApplication] keyWindow] endEditing:YES]; 
+0

私が探していたものは、完璧に動作します! – BloonsTowerDefence

0

は現在ファーストレスポンダのステータスを持っているどんなUI要素のインスタンスに-resignFirstResponderメッセージを送信する必要があります。したがって、クラスにUITextFieldのインスタンスに対応するfirstNameTextFieldプロパティがある場合は、そのオブジェクトにメッセージを送信する必要があります。

[self.firstNameTextField resignFirstResponder];

+0

それはどんなUI要素と連携していますか? UIBarButtonItemを使用できますか?私の全面的な問題は、それをリンクする特定のテキストフィールドがないことです。 – BloonsTowerDefence

+0

技術的には、 'UIView'のどのインスタンスも' UIResponder'のサブクラスであるため最初のレスポンダになることができますが、 'UITextInput'プロトコルに準拠していればキーボードを呼び出すだけです。 'UIBarButtonItem'を介してキーボードを閉じるには、アクティブなテキストフィールドで' resignFirstResponder'を呼び出すメソッドにそのボタンを接続する必要があります。あなたが盲目的にすべての編集を終了したいだけならば、 'endEditing:'をルートビューに送ることもできます。サブビューを通って、現在サブビューにある最初のレスポンダを辞任します。 –

0

resignFirstResponderそれを行う方法です。 firstResponderがインスタンス変数(おそらく生成された)として設定されていない状況がある場合は、this answerを使用してfirstResponderを '取得'できます。あなたの最初のレスポンダーオブジェクトを持っていれば、それを辞めるだけです!

これが役に立ちます。

関連する問題