我创建了一个名为ScrollNode的CCNode,基本上它是一个CCNode,用于裁剪子节点的某个区域,并且这个子节点根据透明覆盖的UIScrollView的滚动位置移动它的x和y位置
我想在Cocos2d中使用ScrollView,它感觉iOS平台原生,并且做得很好。
然而,这种处理事物的方式出现了问题。可以滚动的节点上的CCButton触摸不被调用(因为在该区域上有透明的UIScrollView)当它是“轻敲”手势而不是“平移手势”时,是否可以通过UIScrollView的触摸进行调用“
我尝试了以下内容:
// Make sure touches are passed trough all views
for(UIGestureRecognizer *recognizer in self.scrollView.gestureRecognizers)
{
recognizer.cancelsTouchesInView = NO;
}
但这似乎没有任何区别。
亲切的问候,
答案 0 :(得分:1)
我更喜欢解决此问题的方法是在UITapGestureRecognizer
实例上设置我自己的UIScrollView
。然后处理程序将触摸位置传递给处理场景中的点击的代码。
点击和平移手势识别器知道如何相互交互,因此它仍然提供原生体验。
答案 1 :(得分:0)
好像我已经修好了。我已经将UIScrollView子类化,并将touches *事件传递给它的父级。这似乎对滚动没有影响,但确保它确实触发了CCButtons的点击事件。
#import "ScrollNodeScrollView.h"
@implementation ScrollNodeScrollView
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview touchesCancelled:touches withEvent:event];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.superview touchesMoved:touches withEvent:event];
}
- (void)touchesEnded:(NSSet *)aTouches withEvent:(UIEvent *)anEvent
{
[self.superview touchesEnded:aTouches withEvent:anEvent];
}
@end