我在onEnter方法中添加以下代码. doubleTapRecognizer_ = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; doubleTapRecognizer_.numberOfTapsRequired = 2; doubleTapRecognizer_.cancelsTouchesInVi
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层)识别手势,然后将事件传递给适当的节点,或者简单地忽略它,这是一个很好的设计.