当前位置 : 主页 > 手机开发 > 其它 >

uiview – 将多个UITapGestureRecognizers添加到单个视图(Cocos2d)

来源:互联网 收集:自由互联 发布时间:2021-06-13
我在onEnter方法中添加以下代码. doubleTapRecognizer_ = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; doubleTapRecognizer_.numberOfTapsRequired = 2; doubleTapRecognizer_.cancelsTouchesInVi
我在onEnter方法中添加以下代码.

doubleTapRecognizer_ = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)];
    doubleTapRecognizer_.numberOfTapsRequired = 2;
    doubleTapRecognizer_.cancelsTouchesInView = NO;
    [[[CCDirector sharedDirector] view] addGestureRecognizer:doubleTapRecognizer_];

我有这个类的多个实例,但唯一一个获取它的选择器的实例是添加的最后一个实例. UIView Class Reference让我相信可以在单个视图中添加多个UIGestureRecognizer.属性“gestureRecognizers”返回NSArray.

事实上,我已经有一个UIPanGestureRecognizer使用来自另一个类的相同视图.所以我得到至少两个UIGestureRecognizer一次工作.

您可以将多个手势识别器添加到同一视图中.您不能(轻松)做的是将相同手势识别器类型的多个实例(平移,滑动,双击等)添加到同一视图.

为什么?

因为一旦第一手势识别器识别出手势(在这种情况下双击),它就取消所有触摸事件.因此,剩余的手势识别器将永远不会完成识别,并且永远不会触发他们的事件.

您不需要多个相同类型的手势识别器.在您的情况下,一旦您收到双击事件,您可以通过双击来发出正确的对象信号.使用识别器的位置和其他属性来查找,例如,双击的精灵,然后让它做任何需要做的事情.

因此,让场景层次结构中的更高级别节点(即UI层)识别手势,然后将事件传递给适当的节点,或者简单地忽略它,这是一个很好的设计.

网友评论