superarce superarce - 16 days ago 8
iOS Question

How can I handle touch with a CCScene and a CCButton inside him

I'm trying to make a menu with buttons and I want to handle the touch events with all at the same time.

The problem is that if I press the button, the

touchBegan
event doesn't be called in the
CCScene
. I have enabled the touch management in the scene and it works, but it seems like the button blocks the event.

[self setUserInteractionEnabled:YES];
CCButton *pButton = [CCButton buttonWithTitle:@"btn"];
[self addChild:pButton];


I want to use it to make a menu with a list of buttons bigger than the screen and lets the user to do scroll on the list, but the buttons block the touch callbacks and I can't manage the scroll effect.

Anybody know how can I set the button to let the
CCScene
manage the touch events in this situation?

Answer

Solution 1: Set same selector for all the buttons and distinguish them with tags;

CCButton *pButton = [CCButton buttonWithTitle:@"btn"];
pButton.tag = 1;
[pButton setTarget:self selector:@selector(buttonHandler:)];
[self addChild: pButton];

Solution 2: Do not use buttons. Use CCSprite and at touchBegin check for intersects;

CGRectContainsPoint(spriteRect, touchPoint);