iPhone выполняет действие, когда нажата кнопка очистки UITextField / UISearchBar - PullRequest
19 голосов
/ 09 марта 2010

Можно ли получить доступ к методу делегата, который позволит выполнять дополнительные действия при нажатии кнопки «очистить» на UITextField / UISearchBar?

Спасибо

Ответы [ 5 ]

34 голосов
/ 09 марта 2010

См .: Справочник по протоколу UITextFieldDelegate

Если вы установите контроллер представления в качестве делегата для вашего текстового поля (это можно сделать в конструкторе интерфейса), вы можете использовать:

- (void)clearSearchTextField
{
  ...
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
  if (textField == self.searchTextField) [self clearSearchTextField];
  return YES;
}
5 голосов
/ 15 сентября 2017

Для Swift 3:

Чтобы выполнить действие, когда на UITextField нажата кнопка «очистить»

func textFieldShouldClear(_ textField: UITextField) -> Bool {
    if textField == yourTextFieldName {
        // do some action
    }
    return true
}
1 голос
/ 08 марта 2016

Для 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
        }
    }
0 голосов
/ 18 декабря 2013

Смотрите мой ответ здесь: https://stackoverflow.com/a/3852509/91458 - это для панели поиска, но должно применяться и к textField.

0 голосов
/ 08 апреля 2010

Когда вы очистите текстовое поле, произойдет несколько событий, к которым у вас будет доступ через UISearchDisplayDelegate или UISearchBarDelegate, например searchBar:textDidChange и searchDisplayController:shouldReloadTableForSearchString

Это также приведет к тому, что таблица поиска будет скрыта, поэтому будет срабатывать

searchDisplayController:willHideSearchResultsTableView  
searchDisplayController:didHideSearchResultsTableView

Когда таблица поиска будет скрыта, вы можете проверить, является ли текст поиска пустым, а затем сделать все, что вам нужно.

...