2017-10-17 5 views
0

私のアプリでは、ユーザーがデータを入力するUITextFieldsとUITextViewsがたくさんあります。ユーザーがフィールドをタップすると、最初のレスポンダーになり、キーボードがうまく表示されます。ユーザーが別のフィールドをタップすると(現在のフィールドを変更した後)、キーボードは消え、現在のフィールドは最初のレスポンダではなくなります。しかし、タップされたフィールドはすぐに新しい最初のレスポンダーになることはなく、キーボードは閉じる。最初の応答者になるように要求したUIViewを取得するには?

私のアプリでは、フィールドが変更された後、すべてのデータを再計算し、他のすべてのフィールドの値をリセットします。私はこれが、新しくタップされたフィールドが最初のレスポンダの要求を緩める原因になっていると考えています。再計算の影響を受けず、正しく動作するフィールドがいくつかあります(つまり、すぐにフォーカスが得られ、キーボードは開いたままです)。だから、フィールドの値やプロパティを変更すると、保留中のファーストレスポンダリクエストがリセットされることは間違いありません。

フィールドが最初のレスポンダキューに保留中であるかどうかを検出するにはどうすればよいですか?

このキューから削除せずに変更するにはどうすればよいですか?

+1

「ファーストレスポンダキュー」はありません。通常、ユーザーがフィールドをタップすると、キーボードがすでに表示されていた場合、キーボードは消えません。だからあなたはそれを遠ざけるに違いありません。なぜそれがあるのか​​考える必要があります。 – matt

+0

えええええええええええええええええ、もう、ここであなたが抱えている問題は何ですか?またはあなたは何を達成しようとしていますか? – NSAdi

+0

別のUITextFieldをタップすると、現在のフィールドのresignFirstResponder()が私のコードではなく(私が知る限り)iOSによって呼び出されます。私は、textFieldDidEndEditing()メソッドから他のフィールドへの更新を行っています。だから私はキーボードを閉じているわけではない(少なくとも直接ではない)。 – zkon

答えて

0

問題が見つかりました。私のコードは.isEnabledをfalseに設定し、それをtrueに戻していました。これは、フィールドを最初のレスポンダーチェーンから削除する原因となりました。私のコードは、表示と編集のために同じパスを共有していました。最初はフィールドを無効に設定しました。編集モードであれば、有効に設定しました。これを固定するだけで、初期ブランケットを無効にせずに問題を修正しました。

したがって、.isEnabledスイッチをフリックすると、レスポンダチェーンからフィールドが削除されます。

関連する問題