7

Tengo un viewController principal, se llama WelcomeViewController. Tengo una subclase UIView y tiene algunas cosas relacionadas con la vista. Quiero agregar un UITapGestureRecognizer a esa subclase. Solo quiero que el reconocedor de gestos reconozca los grifos dentro de esa subvista. Cómo puedo hacer eso. Debería poner el UITapGestureRecognizer en la subclase o debería ponerlo en la vc de bienvenida. Gracias por adelantado.Problema con un UITapGestureRecognizer

Además, he jugado un montón y parece que no puedo entenderlo.

Respuesta

1

Puede elegir el receptor UITapGestureRecognizer, no tiene que ser la misma clase que creó la instancia del reconocedor (es decir, self). Si lo crea en su WelcomeViewConroller, se puede seleccionar cualquier subvista para recibir los eventos:

[tapRecognizer addTarget:aSubview action:@selector(myMethod:)]; 
+0

No, esa parte estoy bien con. ¿A qué subvista agrego el gesto Recognizer? – Andrew

+0

La subvista que responderá al toque (s). –

+0

Pero parece que no puedo hacer que funcione – Andrew

18

Depende de si desea manejar el grifo en su opinión objeto personalizado o en el controlador de vista.

Si en la vista, añadir esto a que es init u otro lugar adecuado:

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[self addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 

Si en el controlador de vista, añadir esto en el viewDidLoad (u otro lugar adecuado):

UITapGestureRecognizer* tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 
[yourCustomView addGestureRecognizer:tapRecognizer]; 
[tapRecognizer release]; 

manejador es el mismo:

- (void)handleTap:(UITapGestureRecognizer*)recognizer 
{ 
    // Do Your thing. 
    if (recognizer.state == UIGestureRecognizerStateEnded) 
    { 
    } 
} 

Tome un vistazo al SimpleGestureRecognizers ejemplo y debería tener una muy buena idea.

---- ---- Actualizado 10/1/2012

Para aquellos de ustedes que les gusta usar guión gráfico/punta, esto es súper simple!

  1. Abra su guión gráfico/punta.

  2. Arrastre y suelte el tipo de reconocedor que desee de la Biblioteca de Objetos en el elemento UI que desee.

  3. Haga clic derecho en el objeto reconocedor, luego conecte su selector a un IBAction en el propietario del archivo (generalmente un UIViewController). Si es necesario, conecte también el delegado.

  4. ¡Ya ha terminado! enter image description here

+0

Estoy bien con todo eso. El problema es que subclasé una UIView en mi vista principal. Ahora, a qué vista agrego el UITAPGestureRecognizer a. La subvista (que no funciona) o la vista principal (que hace que funcione cuando toco en cualquier lugar, incluso fuera de la subvista) – Andrew

+0

He refinado mi respuesta. ¿Eso tiene más sentido para tu situación? –

+0

Es posible que su vista principal no pase los eventos a la subvista. Además, puede verificar si el punto de contacto está en el marco de la subvista. – TheBlack

2

creo que es necesario establecer el delegado del reconocedor gesto para ser lo controlador de vista desea manejar los grifos.

gestureRecognizer.delegate = self; 

por ejemplo. Luego adopte el protocolo UIGestureRecognizerDelegate en su encabezado.

+0

Este fue el problema para mí, gracias. –

1

Creo que es posible que tenga el mismo problema que experimenté.Cuando llamas [yourCustomView addGestureRecognizer: tapRecognizer]; necesita hacer referencia a través de un UIView * por lo que en el ejemplo intento:

UIView *mySubView = yourCustomView; 
[mySubView addGestureRecognizer:tapRecognizer]; 

esperanza esto ayuda.

1

Por favor, marque view.userInteractionEnabled=true;

+0

¿No está activado por defecto? – Andrew

+0

sí, es predeterminado, –

Cuestiones relacionadas