我已经在一个来自NSObject的类中添加了一个UIGestureRecognizer,我正在使用UIGestureRecognizers来处理手势,但是我需要添加一个上层并在其上添加一些CCButton,所以要概念化我的层次结构将是几乎就是这样:
- CCScene
-- CCNode added to the scene (with the gesture recognizers)
-- another CCNode added with a few CCButton
UIGestureRecognizers运行良好,但CCButton从未被调用,因为触摸是由手势处理的,如果我删除手势,则称为CCButton
它们存在冲突,我不知道为什么,我已经读过CCNodes触摸从第一个开始(在层次结构中,第一个是我认为的更大的z顺序)直到最后一个,因为我的CCNode都被添加到场景中,并且因为第二个ccnode(添加了更大的z顺序)是第一个我认为它应该在另一个的UIGestureRecognizer之前触摸...
我缺少什么?
这是我添加手势的方式:
UITapGestureRecognizer *myGesture = [[UITapGestureRecognizer alloc] initWithTarget:self.myClassImplementation action:@selector(gesture:)];
[tapGesture setDelegate:self.myClassImplementation];
[[[CCDirector sharedDirector] view] addGestureRecognizer:myGesture];
我试着简单地将CCButton直接添加到CCScene但没有被调用,有人可以向我解释他们为什么会发生冲突吗?所以找到我的工作方式
答案 0 :(得分:0)
手势识别器获取所有标准响应者触摸事件。所以你应该在gesturerecognizer的委托方法或手势动作中处理它。
以下是如何在委托方法中执行此操作:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint touchLocation = [[CCDirector sharedDirector] convertToGL: [touch locationInView:touch.view]];
CCResponderManager *responder = [[CCDirector sharedDirector] responderManager];
CCNode *node = [responder nodeAtPoint:touchLocation];
if([node isKindOfClass:[CCButton class]])
{
NSLog(@"button");
return NO;
}
else
{
NSLog(@"not button");
return YES;
}
}