터치 이벤트를 추적하여 아래 보이는보기로 전달하는 현재 창 위에 투명한 마스크보기를 만들고 싶습니다. 그러나이 마스크에 userInteractionEnabled = YES를 설정하면이 이벤트가 차단되고 아래에 전달되지 않습니다.Cocoa-touch에서 터치 이벤트를 "우회"하는 방법은 무엇입니까?
이보기가 이벤트를 차단하거나 수동으로 이벤트를 전달하지 못하도록하는 방법이 있습니까?
감사합니다,
터치 이벤트를 추적하여 아래 보이는보기로 전달하는 현재 창 위에 투명한 마스크보기를 만들고 싶습니다. 그러나이 마스크에 userInteractionEnabled = YES를 설정하면이 이벤트가 차단되고 아래에 전달되지 않습니다.Cocoa-touch에서 터치 이벤트를 "우회"하는 방법은 무엇입니까?
이보기가 이벤트를 차단하거나 수동으로 이벤트를 전달하지 못하도록하는 방법이 있습니까?
감사합니다,
난 그냥 최근에 내 애플 리케이션 중 하나를 위해 이런 짓을하고 매우 간단 밝혀졌다.
은 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];
자세한 정보가 필요하면 도움이되고 의견을 남기십시오.
-hitTest:withEvent:
메시지 다운 리스폰 체인-[NSView hitTest:withEvent:]
를 오버라이드 (override)하는 경우따라서 (항상 감동 되었으나 자주보기) 발견 (사용자 정의 창을 사용하여 아마도!) 당신이 할 수있는 모든 들어오는 이벤트를 기록하고 01를 호출은 정상적으로 작동합니다.
고마워, 나는 이것을 시험해 볼 것이다! –
답장을 보내 주셔서 감사합니다. 그러나 이것은 제 경우에는 효과가없는 것 같습니다. 특정 상황을 전체 창으로 보내야합니다. 특정보기가 아닙니다. 창 루트보기로 이벤트를 보내려고했지만 작동하지 않았습니다. –