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.

¿Fue útil?

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.

ingrese la descripción de la imagen aquí

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top