私はこの問題を抱えていUISearchDisplayController
ます。検索を処理するための専用ビューで使用したい。私のコントローラ クラスでは、検索バー、検索コントローラ、およびテーブルビュー コントローラの構成を使用しました。SearchViewController は にリンクされてい.xib
ます。
@interface SearchViewController : UIViewController <UISearchBarDelegate, UISearchDisplayDelegate, UITableViewDelegate, UITableViewDataSource> {
NSSet *words;
UISearchDisplayController *searchController;
UISearchBar *searchBar;
PhraseTableViewController *phraseTableViewController;
}
表示されるとすぐSearchViewController
に、検索バーがファーストレスポンダーになり、検索がアクティブになります。1 つの例外を除いて、すべてが正常に動作
するように見えます。前のビューに戻るには、SearchBar のキャンセル ボタンを使用したいと考えています。ここで問題が発生します。検索が行われていないときにユーザーが下にあるテーブルビューの灰色の領域に触れると、キャンセル ボタン (したがって、元に戻る唯一の方法) が消えます。
これを解決するために私が試みたのは次のとおりです。
showsCancelButton = YES
オンsearchDisplayControllerDidEndSearch
。動作しますが、結果として得られる UI は地獄のように醜いものです。キャンセル ボタンが遷移してから再び表示されます。- タップをキャッチすることを期待して
UITapGestureRecognizer
、searchcontrollerに a を追加します。searchResultTableView
うまくいきません、まだ続きます。 - サブクラス
UISearchBar
とオーバーライドself.searchController.searchBar setShowsCancelButton:
- 機能しませんでした。
これを解決する方法のアイデア:
- 常にキャンセル ボタンを非表示にし、代わりにカスタム ボタンを追加します。質問: UI の見栄えを良くする方法を知っていますか? 私が最も懸念しているのは、検索テキストフィールドが常にボタンの横にうまく収まるように、すべてのケースを処理することです。
UISearchDisplayController
より柔軟なソリューションのために、すべてを一緒に捨ててください。どこを見ればいいかわかりますか?iOS 3 以前には、このコントローラーは存在しませんでしたよね? まだ機能する解決策はありませんか?
ご意見をお寄せいただければ幸いです。前もって感謝します。