【问题标题】:iPhone - 3 multiple detections of UIGestureRecognizeriPhone - UIGestureRecognizer 3 多次检测
【发布时间】:2012-02-12 05:44:07
【问题描述】:

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

这就是我添加它的方式。

// 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];

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

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

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

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

我错过了什么?

有没有办法在 handle 方法中检测点击次数?

谢谢

【问题讨论】:

  • 你真的应该只需要[doubleTap requireGestureRecognizerToFail:tripleTapOneFinger];;没有其他冲突。在太多的依赖项混淆识别器之前,我已经注意到了。
  • YESSSSSS。谢谢。请将此添加为答案,以便我给您正确答案。

标签: iphone ios


【解决方案1】:

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

[doubleTap requireGestureRecognizerToFail:tripleTapOneFinger]; 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多