2010-03-08 14 views

Respuesta

31

Ver: UITextFieldDelegate Protocol Reference

Si usted fija su vista controlador como el delegado para su campo de texto (que se puede hacer en constructor de interfaces), que puede utilizar:

- (void)clearSearchTextField 
{ 
    ... 
} 

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

Genial, esto funciona para UITextField, ¿qué tal un UISearchBar? – Dave

0

Cuando borra el campo de texto, sucederán varios eventos a los que tendrá acceso a través del UISearchDisplayDelegate o el UISearchBarDelegate, como searchBar:textDidChange y searchDisplayController:shouldReloadTableForSearchString

Esto también hará que la tabla de búsqueda para ocultar lo que dará lugar a

searchDisplayController:willHideSearchResultsTableView 
searchDisplayController:didHideSearchResultsTableView 

Cuando la tabla de búsqueda ocultará se puede comprobar si el texto de búsqueda está vacía y luego hacer lo que tiene que hacer.

0

Para un UISearchBar 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.

aplicación

Usted debe ser algo como esto:

func searchBar(searchBar: UISearchBar, textDidChange searchText: String) { 
     if searchText == "" { 
      //Code to execute when search is cleared 
     } 
    } 
+0

Se llama, incluso si borro texto por retroceso. Pero, ¿cómo detectar el texto claro total? – avdyushin

4

Para Swift 3:

Para realizar una acción cuando se pulsa el botón "claro" en un UITextField

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