2011-08-02 5 views
6

I가 두보기다른보기 뒤에있는보기에서 터치를 감지합니까?

  • 평면도 약간 불투명 및 투명 영역 일부
  • 하단보기 일부 클릭 버튼을 가지고있다.

상단보기는 하단보기를 완전히 덮고 있지만 상단보기에는 투명 영역이 있기 때문에 하단보기가 계속 표시 될 수 있습니다.

하지만 톱뷰가 차단 한 이후 더 이상 하단 버튼 클릭을 감지 할 수 없으므로 어떻게해야합니까?

상단보기에서 하단보기까지 터치를 전달할 여지가 있습니까?

답변

4

내 자신의 질문에 대한 해결책은 누군가를 돕기를 바랍니다.

정면에서 볼 때 touchesEnded:withEvent 대의원의 의견을 들어보십시오.

이 대리인이 시작되면 사용자가 정면도를 터치하고 있음을 알게됩니다.

다음으로 손가락 위치가 하단 영역의 특정 영역을 터치하는지 확인해야합니다.

것을 할 것은 :

1)는 저면도에 대하여 상기 시점 변환 :

UITouch *touch = [touches anyObject]; 
CGPoint touchPointInLowerView = [touch locationInView:self.lowerViewController.view]; 
BOOL isLowerButtonClicked = [self.lowerViewController isFingerOnYourButton:touchPointInLowerView]; 
if(isLowerButtonClicked) 
{ 
// lower button clicked 
} 

2) 하부 뷰

- (BOOL) isFingerOnYourButton:(CGPoint)point 
{ 
return CGRectContainsPoint(self.aButton.frame, point); 
} 

늘리면된다. 이렇게하면 맨 위에있는 다른 대화식보기에 의해 차단 된 경우에도 하단보기에서 클릭을 감지 할 수 있습니다.

+0

이 작업을 수행해야하지만 어떻게 처리해야하는지 이해할 수 없습니다. 종료 된 터치 수신 : withEvent 대리자 등 서브 클래 싱 된보기. 나에게 전화해라. 그러나 나는 그것 모두를 볼 필요가있다. – Morkrom

1
는 아래의보기를 차단 상위 뷰에서 사용자 상호 작용을 끄고

:

topView.userInteractionEnabled = NO; 
+0

불행히도 상위보기는 스크롤 가능보기 ... 상호 작용이 필요합니다. 보통 ... – mkto

1

전혀 접촉에 응답 상위 뷰 (또는 파단 중 하나를)하지 않으려면 해당 뷰에 대해 userInteractionEnabled 속성을 NO로 설정하고이를 수행 할 수 있습니다.

그렇지 않으면 최상위보기의 클래스에서 pointInside:withEvent: 또는 hitTest:withEvent:을 무시하는 것이 가장 좋습니다. 상단보기와 하단보기가 형제 인 경우 pointInside:withEvent:에서 NO를 반환 할만큼 충분해야합니다. 뷰 계층에서 더 이상 분리 된 경우 투명 영역의 아래쪽 뷰를 명시 적으로 반환하려면 hitTest:withEvent:을 무시해야 할 수 있습니다.

+0

불행히도 상위보기는 스크롤 가능보기 ... 상호 작용이 필요합니다. 두 번째 제안서를 살펴 보겠습니다 ... 고맙습니다. 업데이트가있을 것입니다. 그러는 동안 누군가는 나에게 알려주는 다른 제안을 가지고있다. – mkto

관련 문제