我有图层,我在其上放置了精灵(黄色)和子菜单(“主菜单:按钮”),看起来像模态对话框。该图层下面还有多个按钮,菜单。我想要实现的是无论何时出现此图层,都不要将触摸事件传播到其他项目。这就是我在图层类中所做的:
- (id)init {
...
// I was hoping that this will take touch and eat, so if I tap on button it will not be propagated further, because it has lowest priority
[_menu setHandlerPriority:INT_MIN+1];
...
}
-(void)registerWithTouchDispatcher {
// With this I was hoping that if I tap anywhere else my layer class will capture it first
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:INT_MIN+2 swallowsTouches:YES];
}
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
// so I simply drop any tap on my layer
return NO;
}
可能我错过了一些东西,但是我的图层下方的这个按钮仍然可以触摸。所以模态概念不起作用。
如何让我的黄色精灵的所有儿童物品都可以触摸,其余部分则无法触及。
答案 0 :(得分:1)
您在ccTouchBegan
的回复是个问题。
当ccTouchBegan
告诉它时,你的图层只会吞下触摸(返回YES)。
通常你会检查触摸是否在图层的范围内,然后返回YES,但在这种情况下,返回YES总是会吞下所有触摸(除非有另一层优先级INT_MIN,或INT_MIN + 1)。
编辑:点2 - 确保您启用触摸开始:
[self setTouchEnabled:YES];