2013-12-12 3 views
2

이 질문에 대한 해결책은 어디에서나 찾았지만 내 경우는 다른 것처럼 보입니다.이벤트를받은 부분으로 부분적으로 덮여있는 다른보기로 이벤트 전달

GMSMapView (google maps api의지도보기)는 화면 전체를 차지하고 다른보기는지도 (하위보기가 아니라 부분적으로 덮음)를 차지합니다. 무슨 일이 일어나는가는 손가락 하나를 두 번째보기의 꼭대기에서 시작하고 다른 손가락을지도의 꼭대기에 붙이면지도에 제스처가 표시되지 않습니다. 두 번째보기에는 큰 투명한 영역이 있기 때문에 한 손가락으로 이동하면지도가 제스처 (이동)가되지만 단추 (지도가 아닌보기의 하위보기)는 계속 표시되는 것이 좋습니다.

나는 비지도보기의 뷰 클래스 파일의지도보기에 대한 참조를 유지하고 그러나 hitTest 메서드를 구현 시도했지만지도는 여전히 어떤 접촉을하지 않습니다 ... 감사합니다 많은

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    UIView *hitView = [super hitTest:point withEvent:event]; 

    // If the hitView is THIS view, return the map instead 
    if (hitView == self) 
    { 
     return self.targetView; //the map view 
    } 
    // Else return the hitView (as it could be one of this view's buttons): 
    return hitView; 
} 

답변

1

두 번째보기에서는 pointInside 메서드를 오버라이드하고 해당 점이보기의 탭 가능한 부분에 있으면 YES를 반환합니다 (예 : 단추 등 - 해당 지점이 단추 프레임 안에 있는지 확인) 그렇지 않으면 NO를 반환합니다.
두 번째보기에서 사용자가 탭하고 pointInside에서 NO를 반환하면 mapview의 pointInside가 호출되어 이벤트를받습니다. YES를 반환하면 mapView의 poinInside가 호출되지 않으므로 mapView는 이벤트를받지 못합니다.
희망이 도움이됩니다.

관련 문제