2010-03-08 6 views

Répondre

31

Voir: UITextFieldDelegate Protocol Reference

Si vous définissez votre contrôleur de vue en tant que délégué pour votre champ de texte (qui peut être fait dans le constructeur d'interface), vous pouvez utiliser:

- (void)clearSearchTextField 
{ 
    ... 
} 

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

Super, cela fonctionne pour UITextField, que diriez-vous d'un UISearchBar? – Dave

0

Lorsque vous effacez le champ de texte plusieurs événements se produiront que vous aurez accès à travers le UISearchDisplayDelegate ou le UISearchBarDelegate tels que searchBar:textDidChange et searchDisplayController:shouldReloadTableForSearchString

Cela aussi causer la table de recherche pour cacher il déclenchera

searchDisplayController:willHideSearchResultsTableView 
searchDisplayController:didHideSearchResultsTableView 

Lorsque la table de recherche cachera vous pouvez vérifier si le texte de recherche est vide et faites tout ce que vous devez faire.

0

Pour UISearchBar, vous devez implémenter func searchBar(searchBar: UISearchBar, textDidChange searchText: String). Ceci est déclenché avant func searchBarTextDidBeginEditing(searchBar: UISearchBar) et avant func searchBar(searchBar: UISearchBar, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool également.

mise en œuvre Vous devriez ressembler à ceci:

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

Il est appelé, même si j'efface le texte par retour arrière. Mais comment détecter le texte clair total? – avdyushin

4

Swift 3:

Pour effectuer une action lorsque le bouton "clear" appuie sur un UITextField

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