2013-08-07 1 views
0

기본적으로 아래 이미지의 모든 하위보기를 클릭 할 수 있기를 원합니다 ...hitTesting 할 때 SuperView를 피할 수 있습니까?

보기 B의 하위보기를 탭하고 싶지만보기 A가 하위보기이지만 아래보기를 차단하지 않습니다. 이것이 가능한가? 다른 말로하면 프레임/경계가 해당 영역을 덮고 있음에도 불구하고보기의 투명한 부분을 탭할 수 있기를 원합니다. 보기 B는보기 A의 ScrollView에 있습니다.

덕분에,

Image showing an example

답변

1

오스틴 해결책은 (는 사용자 지정보기가 이미 아니라면) 모양 A를 서브 클래스 화해, pointInside:withEvent을 무시하는 것입니다.

지정된 포인트가 View A의 하위보기 중 하나에 속하면 YES을 반환하고 그렇지 않으면 NO을 반환합니다. pointInside:withEventNO을 반환하면 시스템은 포인트가 안에 있다고 주장 할 때까지 다른보기를 시도한 다음 hitTest:withEvent을 호출하여 터치를 보낼 내부보기 (기본 동작)를 확인합니다.

+0

임이 시도하지만 히트 ... 결코 - pointInside (BOOL) : (UIEvent를 *) 이벤트 (UIView의 * self.subviews의 서브 뷰) 에 대한 { {: (CGPoint)이 withEvent 포인트를 UIView * result = [subview hitTest : point 이벤트 : 이벤트]; if (result! = nil) { return YES; 휴식; } } return NO; } –

+0

나는 그것을 가지고 ... 내 서브뷰는 프레임의 바깥쪽에있는 레이블에만 응답하고 있기 때문에 약간의 hitTesting을하고있다.하지만 내가 필요로했던 것을 나에게 주었다. 감사하고 ... 멋지고 간단하다 ... IOS는 놀라워요. , 너도 마찬가지야! –

+0

건배 - 'pointInside'에서 하위보기에'hitTest'를 호출하지 마십시오. - 하위보기에서'pointInside'를 호출하십시오. 그것은 마치 "이 관점이 당신의 견해에 있습니까?" ->'아니오'-> "좋아, 잊어 버려라."- "이 점은 시야 안에 있습니까?" ->'예'-> '좋아, 어느 시점에서 볼 수 있니? (히트 테스트)'. 즉,'pointInside'가'YES'라고 말한 경우에만'hitTest'가 호출되어야합니다. – jhabbott

관련 문제