iPhone - 3次UIGestureRecognizer的多次检测

Spa*_*Dog 2 iphone ios

我有3个UIGestureRecognizers附加到视图:一个手指双击,两个手指双击和一个手指三击.问题是这样的:当我点击三次时,它会触发应该通过双击然后三击的方法触发的方法.

这就是我添加它的方式.

// one finger double tap
doubleTap = [[[UITapGestureRecognizer alloc]
              initWithTarget:self 
              action:@selector(handleDoubleTap:)] autorelease];
[doubleTap setCancelsTouchesInView:YES];
[doubleTap setNumberOfTapsRequired:2];
[doubleTapDoisDedos setNumberOfTouchesRequired:1];
[doubleTap setDelegate:self];
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:doubleTap];  


// two fingers double tap
twoFingerDoubleTap = [[[UITapGestureRecognizer alloc]
              initWithTarget:self 
              action:@selector(handleDoubleTapTwoFingers:)] autorelease];
[twoFingerDoubleTap setCancelsTouchesInView:YES];
[twoFingerDoubleTap setNumberOfTapsRequired:2];
[twoFingerDoubleTap setNumberOfTouchesRequired:2];
[twoFingerDoubleTap setDelegate:self]; 
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:twoFingerDoubleTap]; 



// triple tap com um dedo faz as cartas se empilharem
tripleTapOneFinger = [[[UITapGestureRecognizer alloc]
              initWithTarget:self 
              action:@selector(handleTripleTap:)] autorelease];
[tripleTapOneFinger setCancelsTouchesInView:YES];
[tripleTapOneFinger setNumberOfTapsRequired:3];
[tripleTapOneFinger setNumberOfTouchesRequired:1];
[tripleTapOneFinger setDelegate:self]; 
[[[CCDirector sharedDirector] openGLView] addGestureRecognizer:tripleTapOneFinger];
Run Code Online (Sandbox Code Playgroud)

是的,我试图添加这些,但没有成功

[doubleTap requireGestureRecognizerToFail:doubleTapTwoFingers];   
[doubleTap requireGestureRecognizerToFail:tripleTapOneFinger];  

[doubleTapTwoFingers requireGestureRecognizerToFail:doubleTap];   
[doubleTapTwoFingers requireGestureRecognizerToFail:tripleTapOneFinger];  

[tripleTapOneFinger requireGestureRecognizerToFail:doubleTap];   
[tripleTapOneFinger requireGestureRecognizerToFail:doubleTapTwoFingers];  
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

有没有办法在handle方法中检测水龙头的数量?

谢谢

NJo*_*nes 5

添加太多手势识别器依赖性requireGestureRecognizerToFail:会导致问题.在您的情况下,只需添加所需的一个依赖项:

[doubleTap requireGestureRecognizerToFail:tripleTapOneFinger]; 
Run Code Online (Sandbox Code Playgroud)