带按钮失败的模态对话框

时间:2013-05-22 15:49:09

标签: ios cocos2d-iphone

我有图层,我在其上放置了精灵(黄色)和子菜单(“主菜单:按钮”),看起来像模态对话框。该图层下面还有多个按钮,菜单。我想要实现的是无论何时出现此图层,都不要将触摸事件传播到其他项目。这就是我在图层类中所做的:

- (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;
}

可能我错过了一些东西,但是我的图层下方的这个按钮仍然可以触摸。所以模态概念不起作用。

如何让我的黄色精灵的所有儿童物品都可以触摸,其余部分则无法触及。

enter image description here

1 个答案:

答案 0 :(得分:1)

您在ccTouchBegan的回复是个问题。

ccTouchBegan告诉它时,你的图层只会吞下触摸(返回YES)。

通常你会检查触摸是否在图层的范围内,然后返回YES,但在这种情况下,返回YES总是会吞下所有触摸(除非有另一层优先级INT_MIN,或INT_MIN + 1)。

编辑:点2 - 确保您启用触摸开始:

[self setTouchEnabled:YES];