2011-02-17 2 views
1

터치 이벤트를 추적하여 아래 보이는보기로 전달하는 현재 창 위에 투명한 마스크보기를 만들고 싶습니다. 그러나이 마스크에 userInteractionEnabled = YES를 설정하면이 이벤트가 차단되고 아래에 전달되지 않습니다.Cocoa-touch에서 터치 이벤트를 "우회"하는 방법은 무엇입니까?

이보기가 이벤트를 차단하거나 수동으로 이벤트를 전달하지 못하도록하는 방법이 있습니까?

감사합니다,

답변

1

난 그냥 최근에 내 애플 리케이션 중 하나를 위해 이런 짓을하고 매우 간단 밝혀졌다.

은 UIView의 서브 클래스에 준비가 되었나요 :

내가 포수보기보기 내 마스크라는

이 프로토콜은 모습입니다 :

여기
@interface CatcherView : UIView { 

    UIView *viewBelow; 

} 

@property(nonatomic,retain)UIView *viewBelow; 

@end 

그냥 UIView의 서브 클래스 및 뷰에 대한 참조를 유지하는 소 우는 소리.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touch Began"); 
    [self.viewBelow touchesBegan:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touch Moved"); 
    [self.viewBelow touchesMoved:touches withEvent:event]; 
} 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touch Ended"); 

    [self.viewBelow touchesEnded:touches withEvent:event]; 
} 

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"Touch Cancelled"); 
    //Not necessary for my app but you just need to forward it to your view bellow. 
} 

는 그냥보기 또는보기를 설정 기억 : 완전히보기로 접촉을 통과하기 위해 적어도 4 개 메소드를 구현, 또는 뷰가 울부 짖는 데 필요한 구현에

,이 방법이 어떻게 보이는지이다 보기를 만들 때 울부 짖는 소리입니다. 배경색을 깨끗하게 설정하는 것도 매우 중요하므로 마스크로 사용됩니다. 이 모양은 다음과 같습니다.

CatcherView *catchView=[[CatcherView alloc] initWithFrame:[self.view bounds]]; 
    catchView.backgroundColor=[UIColor clearColor]; 
    catchView.viewBelow=myViewBellow; 
    [self.view addSubview:catchView]; 

자세한 정보가 필요하면 도움이되고 의견을 남기십시오.

+0

답장을 보내 주셔서 감사합니다. 그러나 이것은 제 경우에는 효과가없는 것 같습니다. 특정 상황을 전체 창으로 보내야합니다. 특정보기가 아닙니다. 창 루트보기로 이벤트를 보내려고했지만 작동하지 않았습니다. –

1
  • UIKit 대상이 발견되면 -hitTest:withEvent: 메시지 다운 리스폰 체인
  • 전송함으로써 이벤트의 대상도 결정 상기 이벤트를 처리하는 응답까지까지 응답 체인 보내진다 당신은 최대 적당히 높은보기에 -[NSView hitTest:withEvent:]를 오버라이드 (override)하는 경우

따라서 (항상 감동 되었으나 자주보기) 발견 (사용자 정의 창을 사용하여 아마도!) 당신이 할 수있는 모든 들어오는 이벤트를 기록하고 01를 호출은 정상적으로 작동합니다.

+0

고마워, 나는 이것을 시험해 볼 것이다! –

관련 문제