Comment pouvez-vous 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.
Remarque: Dans Xcode 4.x et versions ultérieures (iPhone 3.0 SDK et versions ultérieures), vous pouvez le faire dans Interface Builder.
Ce bouton est une incrustation intégrée fournie par la classe UITextField, mais à partir du kit de développement logiciel (SDK) pour iPhone OS 2.2, il n’était pas possible de le définir via Interface Builder. Vous devez l'activer par programme.
Ajoutez cette ligne de code quelque part (viewDidLoad, par exemple):
Objective-C
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
Swift 5.
myUITextField.clearButtonMode = UITextField.ViewMode.whileEditing
PDATE: La dernière version de Xcode IB prend en charge cette propriété.
Vous pouvez également définir cela directement à partir d'Interface Builder sous l'inspecteur d'attributs.
Tiré de XCode 5.1
Swift 4+:
textField.clearButtonMode = UITextField.ViewMode.whileEditing
ou même plus court:
textField.clearButtonMode = .whileEditing
vous pouvez ajouter un bouton clair personnalisé 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];
Objectif c :
self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
Rapide :
txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
ça ne marche pas, fais comme moi:
Rapide:
customTextField.clearButtonMode = UITextField.ViewMode.Always
customTextField.clearsOnBeginEditing = true;
func textFieldShouldClear(textField: UITextField) -> Bool {
return true
}
Swift 4 (adapté de la réponse de Kristopher Johnson)
textfield.clearButtonMode = .always
textfield.clearButtonMode = .whileEditing
textfield.clearButtonMode = .unlessEditing
textfield.clearButtonMode = .never
Sur le Xcode 8 (8A218a):
Rapide:
textField.clearButtonMode = UITextField.ViewMode.whileEditing;
Le "W" est passé de capital à non-cap "w".
func clear_btn(box_is : UITextField){
box_is.clearButtonMode = .always
if let clearButton = box_is.value(forKey: "_clearButton") as? UIButton {
let templateImage = clearButton.imageView?.image?.withRenderingMode(.alwaysTemplate)
clearButton.setImage(templateImage, for: .normal)
clearButton.setImage(templateImage, for: .highlighted)
clearButton.tintColor = .white
}
}