2011-12-28 10 views
2

私はUISearchDisplayControllerを持っています。キーボードの検索ボタンをクリックすると、検索後にキーボードを閉じることを避けたいと思います。 別の投稿からJosh Cashwellのソリューションを使用しようとしました:UISearchBarDelegateを設定し、SearchBarShouldEndEditingを実装しました。しかし、適切なイベントをキャッチするときに問題が発生しました。 SearchBarShouldEndEditingは、検索ボタンをクリックした場合を除いて、いずれの場合でも(つまり、ビューの他の場所をクリックするか、resulttableview ...をドラッグして)はいを返します。UISearchDisplayControllerが検索ボタンで最初のレスポンダーを辞任するのを止める

私の実装: 私はsearchBarSearchButtonClickedに変数を設定し、私はYESまたはNOを返還しなければならないかどうかを判断するためにsearchBarShouldEndEditingでそれを使用しようとしました。繰り返しSearchTextを押しながら検索を押しながらもうまく動作しますが、検索を押した後で他の場所をクリックすると、キーボードは閉じません。

願わくば、searchBarShouldEndEditingが検索ボタンをクリックしたために呼び出されているかどうかを確認する良い方法がありますが、それは得られません。

ありがとうございました!

答えて

0

なぜユーザーがキーボードの「検索」ボタンをクリックしたときにキーボードが消えないようにしたいのですか?

しかしとにかく...私はこの問題を解決する方法は、(それがYESを返す前に)あなたのsearchBarShouldEndEditing:デリゲートメソッドでは、UIResponderのを経由して(あなたはキーボードが新しいファーストレスポンダ用に滞在したいテキストフィールドを作ることですbecomeFirstResponder方法)。そうすれば、キーボードは却下する理由がありません。

+0

こんにちはマイケル、ありがとうございました。問題は:UISearchDisplayControllerでbecomeFirstResponderが動作しないことです。そして、私はいつもフォーカスを設定したくありません。 – dani

+0

'UISearchDisplayController'で' becomeFirstResponder'を呼び出すことを言っていませんでしたが、あなたのキーボードが欲しいと思う***その他の***テキストフィールド( 'UISearchDisplayController'の一部ではありません)に。 –

+0

問題:UISearchDisplayControllerでbecomeFirstResponderが動作しません(searchBarSearchButtonClickedで呼び出そうとしましたが動作しません)。 searchBarShouldEndEditingで毎回フォーカスを設定したくありません。背景は次のとおりです:検索バーにテキストを入力するためにスキャナを使用することは可能です。スキャナはスキャン後にenterを送信します。スキャンした後、フォーカスは検索バーに残りますので、検索バーをクリックしてスキャンを再開する必要はありません。しかし、ユーザーが手作業でタブを外に出すと、フォーカスが失われます。 – dani

0

解決済み:検索ボタンを押す時間を節約するためにNSTimeIntervalを使用しました。 SearchBarShouldEndEdiingの時差から、保存された値までチェックされます。もし(diff < 0.001){return NO;} else {return YES;}これはスマートな解決策であるかどうかわかりませんが、うまくいきます。

関連する問題