2012-04-23 9 views
13

¿Puedo cambiar el color del clearButtonMode en un textField?UITextField clearButtonMode color

muestra una X que es gris color oscuro para borrar el campo de texto,

pero puedo mostrar este botón con el color blanco?

gracias

Respuesta

30

Tendrá que crear su propia imagen botón claro en este caso. Sugeriría tomar una captura de pantalla del botón borrar y editar en photoshop.

Puede tomar esa imagen y crear un UIButton con las dimensiones de la imagen. Desde allí, puede configurarlo como el RightView de UITextField. De este modo:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setImage:[UIImage imageNamed:@"clear_button.png"] forState:UIControlStateNormal]; 
[button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; // Required for iOS7 
theTextField.rightView = button; 
theTextField.rightViewMode = UITextFieldViewModeWhileEditing; 

Mecanografié que sin comprobación de sintaxis y lo que no lo que usted quiere comprobarlo antes de ejecutarlo. También querrás reemplazar clear_button.png con el nombre de tu imagen.

También deberá escribir su propio método para borrar el campo de texto.

+3

Esto ya no funciona en iOS 7. En su lugar, debe crear el botón con un marco. – Legoless

+7

Apple debería proporcionar una manera elegante de que esto ocurra – vzm

7

una forma más limpia es la implementación de una categoría en UITextField con este método:

- (void)modifyClearButtonWithImage:(UIImage *)image { 
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
    [button setImage:image forState:UIControlStateNormal]; 
    [button setFrame:CGRectMake(0.0f, 0.0f, 15.0f, 15.0f)]; 
    [button addTarget:self action:@selector(clear:) forControlEvents:UIControlEventTouchUpInside]; 
    self.rightView = button; 
    self.rightViewMode = UITextFieldViewModeWhileEditing; 
} 

-(IBAction)clear:(id)sender{ 
    self.text = @""; 
} 
+0

Creo que debería usar el parámetro 'image' en lugar del UIImage creado" clear-button ". – ingaham

5

versión Swift:

extension UITextField { 
    func modifyClearButtonWithImage(image : UIImage) { 
    let clearButton = UIButton(type: .Custom) 
    clearButton.setImage(image, forState: .Normal) 
    clearButton.frame = CGRectMake(0, 0, 40, 40) 
    clearButton.contentMode = .ScaleAspectFit 
    clearButton.addTarget(self, action: #selector(UITextField.clear(_:)), forControlEvents: .TouchUpInside) 
    self.rightView = clearButton 
    self.rightViewMode = .WhileEditing 
} 

     func clear(sender : AnyObject) { 
     self.text = "" 
    } 

} 
+0

No agregue la [misma respuesta] (http://stackoverflow.com/a/39831522/5292302) a preguntas múltiples. Responda el mejor y marque el resto como duplicados. Consulte [¿Es aceptable agregar una respuesta duplicada a varias preguntas?] (Http://meta.stackexchange.com/questions/104227/is-it-acceptable-to-add-a-duplica te-answer-to- varias preguntas) –

0

En el momento que está configurando el campo de texto, utilice:

let clearButton : UIButton = textField.value(forKey: "_clearButton") as! UIButton 
let image = UIImage(named: "ClearWhite") 

clearButton.setImage(image, for: .normal) 
clearButton.backgroundColor = UIColor.clear