2011-04-21 16 views
5

Cómo desactivo un UIButton hasta que haya texto en el UITextField. El código que tengo no parece funcionar.deshabilita un UIButton hasta que haya texto en el UITextField

if ([nameTextField.text isEqualToString: @""]) { 
      [myButton setEnabled:NO]; 
} 
+2

Gracias por todas las respuestas. Escribí una pequeña publicación en el blog sobre esto: http://blog.tarams.com/?p=339 – Sohan

Respuesta

9

Mantenga el botón deshabilitado. Implementar el UITextFieldDelegate y poner en práctica el método:

- (void)textFieldDidBeginEditing:(UITextField *)textField;  

Comprobar la longitud del texto en el campo de texto y si es mayor que 0, activar el botón.

+1

Esto no funcionó para mí (mi campo de texto comenzó como primera respuesta, por lo que nunca fue llamado). Además, no funciona cuando un usuario ingresa texto, luego lo elimina todo. Utilicé el código de la publicación de blog de @ kingthong para que funcione (código a continuación). –

1

Primera deshabilitar el botón a continuación, utilice la siguiente:

if (![nameTextField.text isEqualToString: @""]) { 
      [myButton setEnabled:YES]; 
} 
1

Esto debe hacerlo. Pruebe esto,

if ([nameTextField.text isEqualToString: @""] == TRUE) { 
    [myButton setEnabled:NO]; 
} 
1

Verificaría dos veces para asegurarme de que se está ingresando la instrucción if - a veces las cosas pueden ser un poco complicadas con los puntos de venta.

Otra forma de lograr resultados similares es utilizar los siguientes métodos.

– addTarget:action:forControlEvents: 
– removeTarget:action:forControlEvents: 
1

En primer lugar comprobar que su UITextField y UIButton están conectados con los constructores de interfaz UITextField y UIButton o no?

Y también escribir el código en el método siguiente:

- (void)textFieldDidBeginEditing:(UITextField *)textField;

Gracias ....

8

Aquí está el código de kingthong's blog post, que trabajó para mí:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    [self.saveButton setEnabled:NO]; 

    [[self myTextField] becomeFirstResponder]; 
    [myTextField addTarget:self 
        action:@selector(textFieldDidChange) 
      forControlEvents:UIControlEventEditingChanged]; 
} 

- (void)textFieldDidChange 
{ 
    if ([self.myTextField.text isEqualToString:@""]) { 
     [self.saveButton setEnabled:NO]; 
    } 
    else { 
     [self.saveButton setEnabled:YES]; 
    } 
} 
+0

¡Excelente respuesta, la mejor que pude encontrar! – Jacob

0

conjunto se deshabilitó en el momento de la asignación y luego usa el método de delegado textField con la condición.

-(void)textFieldDidBeginEditing:(UITextField *)textfield { 
if(yourButton isEqual:@"") { 
    yourButton.enabled = NO; 
}else { 
    your.enabled = YES; 
} 

}

Cuestiones relacionadas