2012-07-03 22 views
15

Conozco el método becomeFirstResponder para establecer un foco en un control, pero ¿cómo saber si ese control (por ej. UITextView) tiene actualmente foco en él o no?cómo saber si un UITextView tiene un foco o no

EDITAR: el problema es que quiero (por ejemplo) cambiar el color de fondo de UITextView cuando recibe el foco, ¿dónde debo poner exactamente la llamada isFirstResponder? ¿Debería usar notificaciones en este caso?

muchas gracias de antemano.

+0

No se puede verificar en este momento, pero ¿no hay una propiedad 'isFirstResponder' o algo? –

+0

Si no lo hay, la subclase UITextView y agrega un ivar/propiedad a tal efecto. A continuación, anule -becomeFirstResponder y configure el indicador. –

+0

oh sí, no le prestaste atención a esa propiedad, sí, en realidad hay una propiedad llamada isFirstResponder ... puedes responder la pregunta para que puedas votar. – JAHelia

Respuesta

37
if([txtView isFirstResponder]){ 
    //Has Focus 
} else { 
    //Lost Focus 
} 

Este método es el delegado de UITextView,

- (BOOL)textViewShouldBeginEditing:(UITextView *)aTextView{ 
    //Has Focus 
    return YES; 
} 

Este enfoque se pierde

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{ 
    if ([text isEqualToString:@"\n"]){ 
     //Lost Focus 
     [textView resignFirstResponder]; 
    } 
    return YES; 
} 
+0

pero el problema es que quiero (por ejemplo) cambiar el color de fondo de UITextView cuando recibe el foco, ¿dónde debería poner exactamente la llamada isFirstResponder? – JAHelia

+0

muchas gracias por su amable ayuda – JAHelia

+0

No olvide registrar algún objeto como el delegado de la vista de texto (generalmente el controlador de vista que posee la vista principal de la vista de texto) –

3

utilizar los métodos de delegado UITextField. Cuando textField consiguió enfocar la (bacame primer nivel de respuesta)

- (void)textFieldDidBeginEditing:(UITextField *)textField; será despedido,

y cuando se pierde el foco

- (void)textFieldDidEndEditing:(UITextField *)textField; será despedido.

Cuestiones relacionadas