Agregar el botón "Borrar" a un iPhone UITextField


175

¿Cómo agrega ese pequeño botón "X" 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 versiones posteriores (iPhone 3.0 SDK y versiones posteriores), puede hacerlo en Interface Builder.

Respuestas:


329

Este botón es una superposición incorporada que proporciona el UITextField clase, pero a partir del SDK de iOS 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):

C objetivo

myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Swift 5.0

myUITextField.clearButtonMode = .whileEditing

61

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


1
Tenga en cuenta que la pregunta se refiere específicamente al 2.2 SDK y señala que esta opción está disponible en Interface Builder en versiones posteriores.
Kristopher Johnson

47

Swift 4+:

textField.clearButtonMode = UITextField.ViewMode.whileEditing

o incluso más corto:

textField.clearButtonMode = .whileEditing

Fix enum type. No debe comenzar desde mayúscula.
T. Pasichnyk

35

Puede agregar un botón de borrado personalizado y controlar el tamaño y cada cosa usando 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];

7

C objetivo :

self.txtUserNameTextfield.myUITextField.clearButtonMode = UITextFieldViewModeWhileEditing;

Rápido:

txtUserNameTextfield.clearButtonMode = UITextField.ViewMode.WhileEditing;

6

Swift 4 (adaptado de la respuesta de Kristopher Johnson)

textfield.clearButtonMode = .always

textfield.clearButtonMode = .whileEditing

textfield.clearButtonMode = .unlessEditing

textfield.clearButtonMode = .never

6

esto no funciona, me gusta:

rápido:

customTextField.clearButtonMode = UITextField.ViewMode.Always

customTextField.clearsOnBeginEditing = true;

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

6

En Xcode 8 (8A218a):

Rápido:

textField.clearButtonMode = UITextField.ViewMode.whileEditing;

La "W" pasó de capital a "w" sin límite.


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

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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.