Hinzufügen des „Clear“ Button auf einem iPhone UITextField
-
11-07-2019 - |
Frage
Wie fügen Sie das kleine „X“ -Taste auf der rechten Seite eines UITextField, das den Text löscht? Ich kann nicht ein Attribut für das Hinzufügen dieser Untersteuerung im Interface Builder in den iPhone O 2.2 SDK finden.
Hinweis: In Xcode 4.x und höher (iPhone 3.0 SDK und höher), können Sie dies im Interface Builder tun
.Lösung
Diese Schaltfläche ist ein Einbau-Overlay, das durch die UITextField-Klasse zur Verfügung gestellt, aber erst nach dem iPhone OS 2.2 SDK, gibt es keine Möglichkeit, es über Interface Builder zu setzen. Sie müssen es programmatisch aktivieren.
Fügen Sie diese Zeile Code irgendwo (viewDidLoad, zum Beispiel):
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
UPDATE:. Die neueste Version von Xcode IB unterstützt diese Eigenschaft unterstützt
Andere Tipps
Sie können dies auch direkt von Interface Builder unter dem Attribute-Inspektoren eingestellt.
Genommen von XCode 5.1
Swift 4 +:
textField.clearButtonMode = UITextField.ViewMode.whileEditing
oder noch kürzer:
textField.clearButtonMode = .whileEditing
können Sie benutzerdefinierte Löschtaste hinzuzufügen und die Größe steuern und alles, was mit dieser:
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];
Objective C:
self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
Swift:
txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
Swift 4 (angepasst von Kristopher Johnson Antwort)
textfield.clearButtonMode = .always
textfield.clearButtonMode = .whileEditing
textfield.clearButtonMode = .unlessEditing
textfield.clearButtonMode = .never
diese nicht funktionieren, tun wie ich:
swift:
customTextField.clearButtonMode = UITextField.ViewMode.Always
customTextField.clearsOnBeginEditing = true;
func textFieldShouldClear(textField: UITextField) -> Bool {
return true
}
Auf Xcode 8 (8A218a):
Swift:
textField.clearButtonMode = UITextField.ViewMode.whileEditing;
Die "W" ging von Kapital zu nicht-Kappe "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
}
}
Auf Xcode Version 8.1 (8B62) kann es direkt in Attributen Inspector erfolgen. Wählen Sie das Textfeld ein und wählen Sie die entsprechende Option aus Clear-Taste Drop-Down-Box, die in Attribute Inspector befindet.