19

UITextField / UISearchBar で「クリア」ボタンが押されたときに追加のアクションを実行できるようにするデリゲート メソッドにアクセスすることは可能ですか?

ありがとう

4

5 に答える 5

35

参照: UITextFieldDelegate プロトコル リファレンス

ビュー コントローラーをテキスト フィールドのデリゲートとして設定する場合 (インターフェイス ビルダーで実行できます)、次を使用できます。

- (void)clearSearchTextField
{
  ...
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
  if (textField == self.searchTextField) [self clearSearchTextField];
  return YES;
}
于 2010-03-08T21:44:26.957 に答える
1

の場合、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
        }
    }
于 2016-03-08T20:05:44.977 に答える
0

テキスト フィールドをクリアすると、いくつかのイベントが発生し、UISearchDisplayDelegateまたはUISearchBarDelegate のいずれかsearchBar:textDidChangeを介してアクセスできます。searchDisplayController:shouldReloadTableForSearchString

これにより、検索テーブルも非表示になるため、トリガーされます

searchDisplayController:willHideSearchResultsTableView  
searchDisplayController:didHideSearchResultsTableView

検索テーブルが非表示になると、検索テキストが空かどうかを確認してから、必要なことを実行できます。

于 2010-04-08T19:46:52.460 に答える
-1

ここで私の答えを参照してください: https://stackoverflow.com/a/3852509/91458 – これは searchBar 用ですが、textField にも適用する必要があります。

于 2013-12-18T19:01:16.763 に答える