BeedfirStresponderの後に隠されたキーボード
-
29-10-2019 - |
質問
設定した後、uitextviewにフォーカスをもたらしています 。隠れた 財産への財産。 [TextView BeedFirStresponder]を設定すると、TextViewは小さなタイピングカーソルを取得しますが、キーボードは隠されたままです。理由は何ですか?それが役立つ場合、メインビューは、UinavigationControllerが提示しているモーダルビューです。
編集:次のように呼ばれる方法は次のとおりです。
- (void)show_comment_elements {
toolbar.hidden = YES;
main_table.hidden = YES;
add_comment_table.hidden = NO;
comment_text.hidden = NO;
[comment_text becomeFirstResponder];
}
これがスクリーンショットです:
解決
ビューが画面上に配置された後にメソッドが呼び出されることを確認したと思います。
ドキュメントから....
レスポンダーオブジェクトは、現在のレスポンダーが最初のレスポンダーステータス(CanResignFirStresponsder)を辞任することができ、新しいレスポンダーが最初のレスポンダーになる場合にのみ、第一レスポンダーになります。
この方法を呼び出して、最初の応答者のビューなどの応答者オブジェクトを作成できます。ただし、ビュー階層の一部である場合にのみ、そのビューでそれを呼び出す必要があります。ビューのウィンドウプロパティにuiwindowオブジェクトが保持されている場合、ビュー階層にインストールされています。 NILが戻ってきた場合、ビューは階層から切り離されています。
そう:
メソッドが呼び出されたときの現在のレスポンダーが最初のレスポンダーステータスを辞任できることを確認できますか?
画面ショットから表示されている場合、ビューの階層にあるように見えます。画面ショットがIBの場合は、ビューのウィンドウプロパティがゼロではないことをテストします。
ビューが編集可能であることを確認してください - (comment_text.isedable)、または最初の応答者のステータスを受け入れない場合。
comment_text setNeedsdisplay]を追加して、ビューセットを最初のレスポンダーとして強制的に再生してください。
これが機能しない場合は、さらにコードを投稿します(メソッドが呼び出されている場所など)。
他のヒント
この問題は、変更するときにも発生します nextResponder
チェーン内のいくつかのオブジェクトでは、応答者チェーンが UIWindow
.