2011-12-08 22 views
5

que tienen un UIView personalizado que implementa el protocolo UIKeyInput y tienepersonalizada UIView y becomeFirstResponder

- (BOOL) canBecomeFirstResponder{ 
    return YES; 
} 

definido en la subclase. Al llamar:

[customView becomeFirstResponder]; 
NSLog(@"is first? %i",[customView isFirstResponder]); 

durante un clic de botón, devuelve falso, a pesar de que canBecomeFirstResponder se ajusta correctamente y todas las funciones de protocolo UIKeyInput se implementan. ¿Qué otras cosas podrían estar bloqueando que esta vista se convierta en la primera respuesta? Vive dentro de un scrollView y otra vista personalizada si eso ayuda.

Actualización:

he comprobado para ver lo que la corriente de primera respuesta fue la siguiente:

UIWindow *keyWindow = [[UIApplication sharedApplication] keyWindow]; 
UIView *firstResponder = [keyWindow performSelector:@selector(firstResponder)]; 

y sorprendentemente firstResponder estaba nil. Entonces nada parece acaparar los eventos.

+0

¿Hay algo más que se niegue a renunciar a la primera respuesta en este momento? ¿Como un campo de texto o algo con un delegado personalizado? –

Respuesta

7

¿Has sobrepasado becomeFirstResponder?

Las subclases pueden anular este método para actualizar el estado o realizar alguna acción de , como resaltar la selección.

Seguimiento:

subclases pueden reemplazar este método para actualizar el estado o realizar alguna acción tal como destacando la selección.

Un objeto de respuesta sólo se convierte en el primer nivel de respuesta si la corriente respondedor puede renunciar estado de primera respuesta (canResignFirstResponder) y el nuevo respondedor puede llegar a ser el primero en responder.

Puede llamar a este método para hacer que un objeto de respuesta, como una vista, responda primero al . Sin embargo, solo debe llamarlo en esa vista si es parte de una jerarquía de vista. Si la propiedad de ventana de la vista contiene un objeto UIWindow , se ha instalado en una jerarquía de vistas; si devuelve nada, la vista se separa de cualquier jerarquía.

¿Ha verificado que cumple con todas las condiciones anteriores?

+0

No, pero eso es genial que puedes. – Ralphleon

+0

Acabo de subclasificarlo para jugar, y de hecho el super regresa NO :( – Ralphleon

+0

Pensé que tal vez ese era el caso. – Steve

Cuestiones relacionadas