В моем верхнем слое у меня есть спрайт «Кнопка «Назад», который должен получать прикосновения. Обычно все остальные касания должны передаваться на нижние слои, но если эта кнопка «Назад» получает жест касания, она должна проглотить касание.
В настоящее время любые прикосновения к кнопке «Назад» также воспринимаются как прикосновения к нижнему слою.
Верхний слой:
-(id) init {
if ((self = [super init])) {
[self scheduleUpdate];
// Initialize KKInput
KKInput* input = [KKInput sharedInput];
input.gestureTapEnabled = input.gesturesAvailable;
...
}
return self;
}
...
-(void) update:(ccTime)delta
{
KKInput* input = [KKInput sharedInput];
if (input.gestureTapRecognizedThisFrame) {
CCLOG(@"Top layer tap recognized");
if ([self.backButton containsPoint:input.gestureTapLocation]) {
CCLOG(@"Top layer Back Button tap recognized");
}
}
}
Нижний уровень
-(id) init {
if ((self = [super init])) {
[self scheduleUpdate];
// Initialize KKInput
KKInput* input = [KKInput sharedInput];
input.gestureTapEnabled = input.gesturesAvailable;
...
}
return self;
}
...
-(void) update:(ccTime)delta
{
KKInput* input = [KKInput sharedInput];
if (input.gestureTapRecognizedThisFrame) {
CCLOG(@"Lower layer tap recognized");
}
}
Если я нажму где-нибудь, кроме кнопки «Назад», результат будет таким, какой я хочу:
2012-10-16 10:58:03.747 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:58:03.749 MyApp[13838:707] Lower layer tap recognized
Но если я нажимаю кнопку «Назад», нажатие не поглощается кнопкой:
2012-10-16 10:49:23.426 MyApp[13838:707] Top layer tap recognized
2012-10-16 10:49:23.429 MyApp[13838:707] Top layer Back Button tap recognized
2012-10-16 10:49:23.434 MyApp[13838:707] Lower layer tap recognized