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, но он также должен применяться к текстовому полю.