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.

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

61

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

Geben Sie hier die Bildbeschreibung ein

Entnommen aus XCode 5.1


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

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];

7

Ziel c :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (nach Kristopher Johnsons Antwort)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

das funktioniert nicht, mag mich:

schnell:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

Auf Xcode 8 (8A218a):

Schnell:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

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


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

     }
}

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.