iphone - example - uisearchbar swift 4
El iPhone realiza una acción cuando se presiona el botón Borrar de UITextField/UISearchBar (5)
Cuando borre el campo de texto, ocurrirán varios eventos a los que tendrá acceso a través de UISearchDisplayDelegate o UISearchBarDelegate, como searchBar:textDidChange
y searchDisplayController:shouldReloadTableForSearchString
Esto también hará que la tabla de búsqueda se oculte para que se active.
searchDisplayController:willHideSearchResultsTableView
searchDisplayController:didHideSearchResultsTableView
Cuando la tabla de búsqueda se oculte, puede verificar si el texto de búsqueda está vacío y luego hacer lo que sea necesario.
¿Es posible obtener acceso a un método de delegado que permitirá que se realicen acciones adicionales cuando se presiona el botón "Borrar" en un UITextField / UISearchBar?
Gracias
Para un UISearchBar
usted querrá implementar func searchBar(searchBar: UISearchBar, textDidChange searchText: String)
.
Esto se activa antes de func searchBarTextDidBeginEditing(searchBar: UISearchBar)
y antes de func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool
también.
Tu implementación debería verse algo como esto:
func searchBar(searchBar: UISearchBar, textDidChange searchText: String) {
if searchText == "" {
//Code to execute when search is cleared
}
}
Vea mi respuesta aquí: https://.com/a/3852509/91458 - es para una barra de búsqueda pero también debe aplicarse a un campo de texto.
Ver: UITextFieldDelegate Protocol Reference
Si configura su controlador de vista como el delegado para su campo de texto (se puede hacer en el generador de interfaces), puede usar:
- (void)clearSearchTextField
{
...
}
- (BOOL)textFieldShouldClear:(UITextField *)textField
{
if (textField == self.searchTextField) [self clearSearchTextField];
return YES;
}
Para Swift 3:
Para realizar una acción cuando se presiona el botón "borrar" en un UITextField
func textFieldShouldClear(_ textField: UITextField) -> Bool {
if textField == yourTextFieldName {
// do some action
}
return true
}