12

これは単純なはずですが、頭痛の種になりつつあります。ユーザーがテキストを入力して検索をクリックする UITextField を持つビューがあります。これにより、別のビュー コントローラーがポップアップし、最初のビューが消える前に、テキスト フィールドでファーストレスポンダーを辞任します。2 番目のビューが閉じられると、最初のビューは自動的にテキスト フィールドを最初のレスポンダーにします。これを抑制する方法が見つかりません。2番目のビューを閉じたときにキーボードがポップアップしないようにする方法を知っている人はいますか?

viewWillAppearでResignFirstResponderを試みましたが、効果はありません。私はviewDidAppearで同じことを試しましたが、キーボードがポップアップしてすぐに閉じてしまい、見栄えが悪くなります。

助けていただければ幸いです。

4

2 に答える 2

0

同様の問題がありました.View Controller AのUITextViewが最初のレスポンダーでした。画面上の別の UI 要素をタップすると、ビュー コントローラー B がナビゲーション スタックにプッシュされましたが、戻るボタンが押されてビュー コントローラー A が再び表示されたとき、UITextView はまだ最初のレスポンダーでした。

resignFirstResponderビューコントローラーAのテキストビューを呼び出すことで問題を解決しましたviewWillDisappear。で呼び出した場合、これは機能しないことに注意してくださいviewDidDisappear。その時点で、テキスト ビューはファーストレスポンダではなくなるためです。を呼び出すときに、テキスト ビューが実際にファーストレスポンダであることを確認することが重要ですresignFirstResponder。そうしないと、辞任しても効果がありません。isFirstResponderテキストビューを調べることで、デバッグ目的でこれを確認できます。

于 2020-10-05T18:39:50.187 に答える