2013-06-21 10 views
7

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

私はviewWillAppearでFirstResponderを再試行しようとしましたが効果はありません。私はviewDidAppearでも同じことを試みましたが、キーボードがポップアップして直ちに解消してしまいました。

何か助けていただきありがとうございます。

+3

コードを投稿できますか? – ggrana

+0

"最初のビューが消える前に、テキストフィールドで最初のレスポンダーを辞任します。"正確に、最初のレスポンダーを辞退するようにテキストフィールドに指示しますか?どのような方法で? –

+0

私はviewWillDisappearで最初のレスポンダーを辞任し、2番目のビューが表示される前にキーボードが消えるのを見ることができますが、2番目のビューを閉じると消えて画面が消えます。 – SeanT

答えて

5

修正が見つかりましたが、それほど良いものではありません。

の直前に、viewWillAppearの直後にcanBecomeResponderメッセージがテキストフィールドに渡されています。

したがって、viewDidAppearのBOOL値をYESに設定し、その値をtextField:shouldBeginEditingメソッドで使用しました。基本的にviewDidAppearがまだ呼び出されていない場合、textField:shouldBeginEditingはNOを返していました。

+0

これはなぜ最初の問題だったのかまだ分かりませんが、あなたの解決策は基本的に私が解決するためにやったことです。私は 'viewDidAppear'にフラグを設定し、' viewDidDisappear'でそれを設定解除し、それを使ってテキストフィールドがアクティブになるかどうかを判断しました。 – SeanT

関連する問題