2012-10-13 105 views
8

gestureRecognizer: shouldReceiveTouch: no se está llamando al método. ¿Lo he configurado incorrectamente?gestureRecognizer: shouldReceiveTouch: no se llama

-(id) init 
{ 
UILongPressGestureRecognizer *touchHold = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleTouchHold:)]; 
touchHold.minimumPressDuration = 1.0f; 
touchHold.numberOfTouchesRequired = 1; 
[[CCDirector sharedDirector].openGLView addGestureRecognizer:touchHold]; 
} 

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    return NO; 
} 

El método de mantener presionado todavía se está llamando aunque configuré el bool en no.

Respuesta

26

Parece que no ha configurado el delegado?

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 

Es la parte de UIGestureRecognizerDelegate. Entonces deberías haber configurado al delegado también.

touchHold.delegate = self; 

Editar: Debe informar a su controlador de vista para implementar el UIGestureRecognizerDelegate. Algo así como

@interface YourViewController <UIGestureRecognizerDelegate> 
+0

'Asignar a 'id ' de tipo incompatible 'HelloWorldLayer *'' – iamruskie

+1

¿Tiene usted el en su @interface YourViewController <...> – ewiinnnnn

+0

ah que tenía '@interface YourViewController {id < UIGestureRecognizer> delegate;} 'y estaba configurando' touchHold.delegate = delegate; 'Gracias por su ayuda, funciona ahora. Estaba confundido allí por un segundo. – iamruskie