iPhone-UIGestureRecognizer的3次多次检测 [英] iPhone - 3 multiple detections of UIGestureRecognizer

查看:40
本文介绍了iPhone-UIGestureRecognizer的3次多次检测的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在视图上附加了3个UIGestureRecognizer:一个手指双击,两个手指双击和一个手指三次单击.问题是这样的:当我连按三下时,它会先触发应通过双击触发的方法,然后触发三连击的方法.

I have 3 UIGestureRecognizers attached to a view: one finger double tap, two fingers double tap and one finger triple tap. The problem is this: when I triple tap, it fires the method that should be fired by double tap then the method for triple tap.

这就是我添加它的方式.

This is how I added it.

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

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

and yes, I have tried to add these, without success

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

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

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

我想念什么?

在handle方法内是否可以检测出抽头的数量?

is there a way to, inside the handle method, detect the number of taps?

谢谢

推荐答案

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

Adding too many gesture recognizer dependancies through requireGestureRecognizerToFail: will cause problems. Just add the one dependency that is needed, in your case:

[doubleTap requireGestureRecognizerToFail:tripleTapOneFinger]; 

这篇关于iPhone-UIGestureRecognizer的3次多次检测的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆