2012-06-11 13 views
6

He creado una subclase personalizada de UIView porque necesitaba anular el método drawRect. Intento agregarle un UITAPGestureRecognizer, pero esto no me funciona. En este caso, el código de mi ViewController:UITapGestureRecognizer no se inicia en UIView Subclase

MyCustomView *customView = [[MyCustomView alloc] initWithFrame:CGRectFrame(0, 30, 30, 30)]; 
[customView setUserInteractionEnabled:YES]; 

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething)]; 
[customView addGestureRecognizer:tapGestureRecognizer]; 

No entiendo por qué cuando me toco el objeto UIView subclase, el reconocedor gesto no se dispara hacia arriba.

¡Muchas gracias de antemano!

FIXED IT OUT!

Mi vista estaba en un UIImageView, y ese UIImageView no tenía el userInteractionEnabled establecido en SÍ.

+0

es tus límites/marco correcto? – CarlJ

+0

Aparentemente sí, mi subclase es, de hecho, un círculo dibujado con CoreGraphics. el marco es: 10, 30, 30, 30. – Vinestro

+0

Para más información (puede ayudar), el código que le muestro se encuentra en el método tableView: cellForRowAtIndexPath. Una idea ? – Vinestro

Respuesta

13

FIXED IT OUT!

Mi vista estaba en un UIImageView, y ese UIImageView no tenía el userInteractionEnabled establecido en SÍ.

+0

Esto me ayudó incluso 3 años más tarde. ¡Gracias! – yeesterbunny

0

Asegúrese de mostrarlo en algún lugar (addSubview).

+0

Sí, veo mi vista. Hago un método addSubview después de agregar el reconocedor de gestos. – Vinestro

0

También asegúrese de que userInteractionEnabled esté establecido en verdadero. Si eso es cierto, publique el código que crea y conecta el reconocedor de gestos.

+0

userInteractionEnabled está establecido en verdadero. Publiqué el código en mi primer código justo encima del tema. Gracias de antemano – Vinestro

0

Ajuste el cheque UserInteractionEnable true en la subvista que va a agregar y en el método de selección, hacer pasar el objeto junto con él, es decir

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomething:)]; 

y hacer que el método de selección como

-(void) doSomething:(UITapGestureRecognizer *)gesture; 

Avíseme si todavía tiene problemas. Gracias!

+0

Fue solo que el UIImageView en el que agrego mi subvista no fue userInteractionEnabled ... Corregido, gracias! – Vinestro

+0

Eso es genial. Ahora no te olvides de dejar la publicación sin respuesta o sin marcar. ¡Salud! –