resignFirstResponder
textfield / view / etcがキーボードをどのように呼んでいるかに関係なく、キーボードを非表示にする一般的な方法はありますか?
resignFirstResponder
理由は、ビューに多くのテキストフィールドがあり、すべてのテキストフィールドでキーボードを非表示にする必要がないためです。ただ将軍が欲しい
[self resignFirstResponder]
。
何か案は?
前もって感謝します
resignFirstResponder
textfield / view / etcがキーボードをどのように呼んでいるかに関係なく、キーボードを非表示にする一般的な方法はありますか?
resignFirstResponder
理由は、ビューに多くのテキストフィールドがあり、すべてのテキストフィールドでキーボードを非表示にする必要がないためです。ただ将軍が欲しい
[self resignFirstResponder]
。
何か案は?
前もって感謝します
これはすでに回答済みとしてマークされていることは知っていますが、私が行ったようにこれに遭遇した場合は、テキストフィールドを含むビューで次のメソッドを使用できます。
- (BOOL)endEditing:(BOOL)force
このメソッドは、現在最初のレスポンダーであるテキストフィールドの現在のビューとそのサブビュー階層を調べます。見つかった場合は、そのテキストフィールドにファーストレスポンダーとして辞任するように求めます。forceパラメーターがYESに設定されている場合、テキストフィールドは尋ねられません。それは辞任を余儀なくされています。UIViewドキュメント
[self.view endEditing:YES];
ビューをクリックするとキーボードが非表示になります。
以下のコードを使用すると、UITextfield/UITextViewを参照せずにキーボードを閉じることができます。
[[[UIApplication sharedApplication] keyWindow] endEditing:YES];
これにより、参照なしでキーボードがグローバルに閉じられます。
これがお役に立てば幸いです。
これを行う最も簡単な方法は、次のようなキーボードを閉じたいときのためのメソッドを用意することです。
-(void)dismissKeyboard {
[firstField becomeFirstResponder];
[firstField resignFirstResponder];
}
これらの質問を確認できます。
要約すると、選択した他のことでbecomeFirstResponderを呼び出すことができます。UIViewControllerまたはUIViewの場合があります。以前にも同様の問題がありました。ViewControllerを呼び出し元に押し戻すときに、どのテキストフィールドが最初の応答者であるかを知らずに、キーボードを離す必要がありました。次に、戻ってきたビューコントローラのviewWillAppearで、[selfbecomeFirstResponder]を呼び出し、プッシュされたビューのキーボードが消えました。これにより、どのテキストフィールドでも、ファーストレスポンダーになるのが緩くなったためです。
私自身のアプリでは、複数のテキストフィールドがあり、どのフィールドが呼び出されてもキーボードをオフにしたい場合は、メソッドを記述して、すべてのフィールドを許可しますresignFirstResponder
。
プログラマーとして、View Controllerにあるテキストフィールドの数とそれらにアクセスする方法を明確に知っている必要があると思います。そうしないと、混乱してアプリの見栄えが悪くなります... :-P