web-dev-qa-db-fra.com

Ajout du bouton "Effacer" à un iPhone UITextField

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.

163
Kristopher Johnson

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é.

305
Kristopher Johnson

Vous pouvez également définir cela directement à partir d'Interface Builder sous l'inspecteur d'attributs.

enter image description here

Tiré de XCode 5.1

57
Nicholas Harlen

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

ou même plus court:

textField.clearButtonMode = .whileEditing
43
Esqarrouth

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];
35
Hossam Ghareeb

Objectif c :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Rapide :

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
7
PT Vyas

ça ne marche pas, fais comme moi:

Rapide:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

Swift 4 (adapté de la réponse de Kristopher Johnson)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never
6
Edouard Barbier

Sur le Xcode 8 (8A218a):

Rapide:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

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

5
Aidan.C
  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

     }
}
0
Pardeep Kumar