2011-08-24 1 views
1

UIView와 UIWebView가 있습니다.iphone - 터치 (탭) 이벤트의 순서

UIWebView는 UIView의 하위보기입니다.

UIWebView에는 YouTube 비디오가 포함되어 있으며 비디오를 UIWebView에 맞출 수 있도록 설정됩니다. 있는 UIWebView가 유튜브 비디오를로드 할 때 사용자가 단일 탭 전체보기, 그것은 A.에게 그래서

를 호출하는 경우

내가, 단일 탭, 말에 대한 부모의 UIView와 관련된 UITapGesture을 가지고, 거기에있는 버튼을 클릭하면 사용자가 클릭하여 재생할 때까지 기다립니다. 그러나 이제 버튼을 클릭하면 YouTube가 재생되지만 A도 호출됩니다. 이것은 내가 원하지 않는 것입니다.

어떻게 해결해야합니까?

터치/탭 이벤트가 순서대로 있어야하고 버튼을 클릭하면 이벤트를 흡수하고 더 이상 UIView를 제공하지 않아야한다고 생각했습니다.

또한 UIWebView 아래에 다른 UIView를 추가하고 해당 동작을 기본보기에 첨부하려고했습니다. 그러나 여전히 작동하지 않습니다.

YouTube 비디오의 버튼을 독립적으로 만들려면 어떻게해야합니까?

감사

답변

1

보기의하는 .m 파일에이 코드를 추가하십시오 (당신의 UIView를 사용하는 경우, 서브 클래스를)

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { 
    CGPoint p = [self convertPoint:point toView:webView]; 
    if ([webView pointInside:p withEvent:event]) { 
     return [webView hitTest:p withEvent:event]; 
    } 
    return [super hitTest:point withEvent:event]; 
} 

나는이 코드를 시도 그것은 아무튼 경우 말하지 않았기 때문에 일하지 마라. 상황을 다루는 방법은 여전히 ​​여러 가지가 있습니다. :)

+0

나에게 서브 클래스보기 이외의 다른 방법을 알려주시겠습니까? –

+0

뷰를 서브 클래스 화하기가 너무 어렵지 않다 ... –

+0

@JacksonTale UITapGesture를 사용하고 있기 때문에, 사용자가 화면에서 탭 한 위치를 가져올 수 있으며, 그 포인트가 UIWebView에 있는지 확인한다. 추가 작업을 중지하기 위해 탭 이벤트 기능을 반환 할 수 있습니다. – xuzhe