Hinzufügen der Schaltfläche "Löschen" zu einem iPhone UITextField

175

Wie fügt man die kleine "X" -Schaltfläche auf der rechten Seite eines UITextField hinzu, die den Text löscht? Ich kann kein Attribut zum Hinzufügen dieses Untersteuerelements in Interface Builder im iPhone OS 2.2 SDK finden.

Hinweis: In Xcode 4.x und höher (iPhone 3.0 SDK und höher) können Sie dies in Interface Builder tun.

Kristopher Johnson
quelle

Antworten:

328

Diese Schaltfläche ist eine integrierte Überlagerung, die von der UITextFieldKlasse bereitgestellt wird. Ab dem iOS 2.2 SDK gibt es jedoch keine Möglichkeit, sie über den Interface Builder festzulegen. Sie müssen es programmgesteuert aktivieren.

Fügen Sie diese Codezeile irgendwo hinzu ( viewDidLoadzum Beispiel):

Ziel c

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing
Kristopher Johnson
quelle
61

Sie können dies auch direkt im Interface Builder im Attributinspektor festlegen.

Geben Sie hier die Bildbeschreibung ein

Entnommen aus XCode 5.1

Nicholas Harlen
quelle
1
Beachten Sie, dass in der Frage speziell nach dem 2.2 SDK gefragt wird und dass diese Option in späteren Versionen im Interface Builder verfügbar ist.
Kristopher Johnson
47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

oder noch kürzer:

textField.clearButtonMode = .whileEditing
Esqarrouth
quelle
Aufzählungstyp korrigieren. Darf nicht mit Großbuchstaben beginnen.
T. Pasichnyk
35

Sie können eine benutzerdefinierte Löschtaste hinzufügen und die Größe und alles damit steuern:

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

Ziel c :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
PT Vyas
quelle
6

Swift 4 (nach Kristopher Johnsons Antwort)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never
Edouard Barbier
quelle
6

das funktioniert nicht, mag mich:

schnell:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

Auf Xcode 8 (8A218a):

Schnell:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

Das "W" ging vom Kapital zum Nicht-Cap "w" über.

Aidan.C
quelle
0
  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

     }
}
Pardeep Kumar
quelle
-4

In Xcode Version 8.1 (8B62) kann dies direkt im Attributinspektor erfolgen. Wählen Sie das Textfeld aus und wählen Sie dann die entsprechende Option aus dem Dropdown-Feld Schaltfläche löschen aus, das sich im Attributinspektor befindet.

Carlson
quelle