所以我正在开发一个应用程序,我的所有手势都被识别出来了。当我尝试在手指触摸屏幕的任何地方添加UIImageViews
时,我的问题就来了。
这些观点是按照他们所做的手指,但问题是我相信他们正在吞下不允许手势被识别的触摸。我试过了:
[_fingerHolder1 setUserInteractionEnabled:NO];
[_fingerHolder2 setUserInteractionEnabled:NO];
但它似乎没有改变任何东西。
我在ccTouchesBegan/Moved/Ended
方法中添加了这些视图,而手势在各自的处理程序中被识别。
我已经看过使用UIPanGesture
但是我在识别滑动时遇到了一些麻烦,并且在执行此操作时设置了手指跟踪器UIImageViews
的坐标。我应该更多地尝试这个还是有不同的解决方案?
感谢任何帮助!
答案 0 :(得分:2)
UIImageView将接收和处理触摸,因此它们不会被转发到cocos2d OpenGL视图(也是UIView)。
要完成这项工作,您需要创建UIImageView的子类并覆盖每个touches ...方法并手动将事件转发到cocos2d的视图,这是touchesBegan的示例:
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[[CCDirector sharedDirector].view touchesBegan:touches withEvent:event];
}
使用此UIImageView子类代替当前使用的原始子类。
这将使常规的cocos2d触摸事件起作用,如果你已经将这些事件添加到cocos2d的视图中,它还应该使UIGestureRecognizers按预期运行。
答案 1 :(得分:0)
如果我理解你需要什么(如果我错了请纠正我),你想在检测到拖动(平移)事件时移动一些UIViews,但是当用户触摸屏幕时你也会添加UIImageViews并且这会禁用接触。
您应该设置UIIMageView.userInteractionEnable = YES
(默认情况下设置为NO),基本上每个应该检测到触摸的视图都应该有userInteractionEnable = YES
。
如果你想忽略某些子视图的一些触摸,你应该实现:
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
的{{1}}方法。
要处理不同类型的手势,您应该实现以下方法:
UIGestureRecognizerDelegate