2012-10-16 3 views
0

내 최상위 레이어에는 터치를 받아야하는 '뒤로 버튼'스프라이트가 있습니다. 일반적으로 다른 모든 터치는 하위 레이어로 전달되어야하지만이 뒤로 버튼이 탭 제스처를 받으면 터치를 삼켜 야합니다.Kobold2D에서 선택적으로 터치를 삼키는 방법은 무엇입니까?

현재 뒤로 버튼의 모든 터치는 아래의 레이어에서 터치로 수신 중입니다.

탑 레이어 :

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

답변

0

동작 상태를 지우려면 다시 껐다가 다시 켤 수 있습니다. 첫 번째 탭 제스처를 처리하는 위치를 추가하면 트릭을 수행해야합니다.

input.gestureTapEnabled = NO; 
input.gestureTapEnabled = YES; 
+0

이 기능은 저에게 적합하지 않습니다. _CCLOG (@ "상위 레이어 뒤로 버튼 탭 인식") 직후에 삽입했지만 _ 하위 레이어는 여전히 탭에 응답했습니다. 이 시점에서 제스처를 사용 중지하거나 사용 설정하기에는 너무 늦었습니까? –