switch example delegate bar iphone uitextfield uisearchbar

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 }