2011-02-09 3 views
12

맑은 배경으로 설정되어있는 UIScrollView가 있습니다. scrollview의 일부에는 콘텐츠가 있지만 일부는 그렇지 않습니다 (따라서 다른 뷰가 뒤에 표시됩니다). UIScrollView 및 뒤에서 MKMapView를 클릭 할 수 있지만 UIScrollView의 투명한 부분에 대해서만 클릭하고 싶습니다.iPhone : 투명 UIScrollView 뒤의보기를 클릭하십시오.

나는 작업을 얻는 방법을 이해하는 진짜 힘든 시간을 보내고 있어요 몇 가지 코드를 발견 :

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    if (![self yourMethodThatDeterminesInterestingTouches:touches withEvent:event]) 
     [self.nextResponder touchesBegan:touches withEvent:event]; 
} 

누군가가 나는 뷰에 터치 이벤트를 전달하는 방법 주위에 내 마음을 포장 도움이 될 수 다른 시각 뒤에? 호출 할 수 있습니다 - (void) touchesBegan : (NSSet *) touches withEvent : (UIEvent *) UIViewController에서 이벤트?

+0

재미 있고, 나는 정반대의 문제가있었습니다. 내 손길이 어떤 이유로 전달되었습니다. 잠시만 기다려주세요. 무슨 일이 일어 났는지 기억할 수 있는지 알게 될 것입니다. – jakev

+0

오케이, 제 상황이별로 관련이 없습니다. 너는 무엇을 이해하지 못하니? nextresponder에 감동을 합리적으로 보인다. – jakev

+0

나는 nextresponder에 관하여 아무 것도 모른다 고 생각한다. 이걸 내가 어떻게 만질 수 있을까? –

답변

7

터치가 투명 영역 내부에서 발생하는 경우 UIScrollView를 서브 클래스 화하고 그 아래 뷰에 책임을 전달하는 논리를 구현했습니다. 투명 영역은 콘텐츠를 의미 Y 축 120의 contentOffset 의해 정의 우리의 경우

가있는 UIScrollView 개시 아래 120 포인트를 시작하고,이 코드는 다음과 같다 :이 응답 분명히

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event 
{ 
    if (self.contentOffset.y < 0 && point.y < 0.0) { 
     return NO; 
    } else { 
     return YES; 
    } 
} 

그 전성기는 지나간 것입니다. 그러나 이것은 해결책을 찾고있는 누군가에게 도움이되기를 바랍니다.

3

기본적으로 다른 응답자에게 전달할 터치 이벤트가 무엇인지 판단해야합니다. 단순히 모든 터치 이벤트를 전달하려는 경우 게시 한 코드에서 해당 if 문을 제거하면 다음 응답자가 모든 터치 이벤트를 수신하게됩니다.