2008-11-26 15 views
128

Comment ajouter ce petit bouton "X" sur le côté droit d'un UITextField qui efface le texte? Je ne trouve pas d'attribut pour l'ajout de ce sous-contrôle dans Interface Builder dans le SDK iPhone OS 2.2.Ajout du bouton "Effacer" à un iPhone UITextField

Remarque: Dans Xcode 4.x et versions ultérieures (iPhone 3.0 SDK et versions ultérieures), vous pouvez le faire dans Interface Builder.

Répondre

272

Ce bouton est une surimpression intégrée fournie par la classe UITextField, mais à partir du SDK iPhone OS 2.2, il n'y a aucun moyen de le définir via Interface Builder. Vous devez l'activer par programme.

Ajouter cette ligne de code quelque part (viewDidLoad, par exemple):

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

MISE À JOUR: La dernière version de Xcode IB ne supporte cette propriété.

+2

- Salut. Puis-je modifier la taille du clearButtonMode sur textField? – NiKKi

32

vous pouvez ajouter bouton personnalisé claire et contrôler la taille et tout en utilisant ceci:

UIButton *clearButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[clearButton setImage:img forState:UIControlStateNormal]; 
[clearButton setFrame:frame]; 
[clearButton addTarget:self action:@selector(clearTextField:) forControlEvents:UIControlEventTouchUpInside]; 

textField.rightViewMode = UITextFieldViewModeAlways; //can be changed to UITextFieldViewModeNever, UITextFieldViewModeWhileEditing, UITextFieldViewModeUnlessEditing 
[textField setRightView:clearButton]; 
38

Vous pouvez également définir directement depuis Interface Builder sous les attributs inspecteur.

enter image description here

Extrait de XCode 5.1

+1

Notez que la question porte spécifiquement sur le SDK 2.2 et note que cette option est disponible dans Interface Builder dans les versions ultérieures. –

25

Swift 3:

textField.clearButtonMode = UITextFieldViewMode.WhileEditing 

ou même plus courte:

textField.clearButtonMode = .whileEditing 
+0

Fixer le type enum. Ne doit pas commencer à partir de la lettre majuscule. –

6

Objectif C:

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing; 

Swift:

txtUserNameTextfield.clearButtonMode = UITextFieldViewMode.WhileEditing; 
4

ce ne fonctionnent pas, faites comme moi:

rapide:

customTextField.clearButtonMode = UITextFieldViewMode.Always 

customTextField.clearsOnBeginEditing = true; 

func textFieldShouldClear(textField: UITextField) -> Bool { 
    return true 
} 
4

Sur Xcode 8 (8A218a):

Swift:

textField.clearButtonMode = UITextFieldViewMode.whileEditing; 

Le "W" est passé de capital à non-cap "w".

-2

Sur Xcode version 8.1 (8B62), il est possible de le faire directement dans l'inspecteur d'attributs. Sélectionnez le champ textField, puis choisissez l'option appropriée dans la liste déroulante Effacer le bouton, qui se trouve dans l'inspecteur d'attributs.