Agregar el botón "Borrar" a un iPhone UITextField
-
11-07-2019 - |
Pregunta
¿Cómo se agrega esa pequeña " X " botón en el lado derecho de un UITextField que borra el texto? No puedo encontrar un atributo para agregar este subcontrol en Interface Builder en el iPhone OS 2.2 SDK.
Nota: en Xcode 4.xy posterior (iPhone 3.0 SDK y posterior), puede hacerlo en Interface Builder.
Solución
Este botón es una superposición integrada que proporciona la clase UITextField, pero a partir del SDK del iPhone OS 2.2, no hay forma de configurarlo a través de Interface Builder. Tienes que habilitarlo mediante programación.
Agregue esta línea de código en alguna parte (viewDidLoad, por ejemplo):
myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
ACTUALIZACIÓN: la última versión de Xcode IB admite esta propiedad.
Otros consejos
También puede configurarlo directamente desde el Creador de interfaces en el Inspector de atributos.
Tomado de XCode 5.1
Swift 4+:
textField.clearButtonMode = UITextField.ViewMode.whileEditing
o incluso más corto:
textField.clearButtonMode = .whileEditing
puede agregar un botón de borrado personalizado y controlar el tamaño y todo con esto:
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];
Objetivo C:
self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;
Swift:
txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;
Swift 4 (adaptado de la respuesta de Kristopher Johnson)
textfield.clearButtonMode = .always
textfield.clearButtonMode = .whileEditing
textfield.clearButtonMode = .unlessEditing
textfield.clearButtonMode = .never
esto no funciona, me gusta:
rápido:
customTextField.clearButtonMode = UITextField.ViewMode.Always
customTextField.clearsOnBeginEditing = true;
func textFieldShouldClear(textField: UITextField) -> Bool {
return true
}
En Xcode 8 (8A218a):
Swift:
textField.clearButtonMode = UITextField.ViewMode.whileEditing;
La " W " pasó de capital a sin capitalización "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
}
}
En Xcode Versión 8.1 (8B62) se puede hacer directamente en el Inspector de atributos. Seleccione el campo de texto y luego elija la opción apropiada del cuadro desplegable Borrar botón, que se encuentra en el Inspector de atributos.