IPhone выполняет действие при нажатии кнопки UITextField/UISearchBar

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

Спасибо

Ответы

Ответ 1

Смотрите: Ссылка на протокол UITextFieldDelegate

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

- (void)clearSearchTextField
{
  ...
}

- (BOOL)textFieldShouldClear:(UITextField *)textField
{
  if (textField == self.searchTextField) [self clearSearchTextField];
  return YES;
}

Ответ 2

Для Swift 3:

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

func textFieldShouldClear(_ textField: UITextField) -> Bool {
    if textField == yourTextFieldName {
        // do some action
    }
    return true
}

Ответ 3

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

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

searchDisplayController:willHideSearchResultsTableView  
searchDisplayController:didHideSearchResultsTableView

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

Ответ 4

Для 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
        }
    }

Ответ 5

См. мой ответ здесь: fooobar.com/info/125766/... - его для searchBar, но он также должен применяться к текстовому полю.