UITextField / UISearchBar で「クリア」ボタンが押されたときに追加のアクションを実行できるようにするデリゲート メソッドにアクセスすることは可能ですか?
ありがとう
UITextField / UISearchBar で「クリア」ボタンが押されたときに追加のアクションを実行できるようにするデリゲート メソッドにアクセスすることは可能ですか?
ありがとう
参照: UITextFieldDelegate プロトコル リファレンス
ビュー コントローラーをテキスト フィールドのデリゲートとして設定する場合 (インターフェイス ビルダーで実行できます)、次を使用できます。
- (void)clearSearchTextField
{
...
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
if (textField == self.searchTextField) [self clearSearchTextField];
return YES;
}
の場合、UISearchBar
実装する必要がありますfunc searchBar(searchBar: UISearchBar, textDidChange searchText: String)
。
func searchBarTextDidBeginEditing(searchBar: UISearchBar)
これは前と前にもトリガーfunc searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
されます。
実装は次のようになります。
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchText == "" {
//Code to execute when search is cleared
}
}
テキスト フィールドをクリアすると、いくつかのイベントが発生し、UISearchDisplayDelegateまたはUISearchBarDelegate のいずれかsearchBar:textDidChange
を介してアクセスできます。searchDisplayController:shouldReloadTableForSearchString
これにより、検索テーブルも非表示になるため、トリガーされます
searchDisplayController:willHideSearchResultsTableView
searchDisplayController:didHideSearchResultsTableView
検索テーブルが非表示になると、検索テキストが空かどうかを確認してから、必要なことを実行できます。
ここで私の答えを参照してください: https://stackoverflow.com/a/3852509/91458 – これは searchBar 用ですが、textField にも適用する必要があります。