2011-01-03 1 views
3

UIViews 묶음이 중첩되어 있지 않습니다. 나는 그들 모두가 만지기를 원하지만, 최상위보기가 그 아래의보기를 가리고 터치 이벤트를받지 못하게하는 것 같습니다. 수 (하나 이상의 UIView에서 터치 이벤트를 동시에 수신

는 처음에 나는 최상위 볼 수있는 모든 터치 이벤트를 캐치 한 후 수동으로
hitTest, 또는 모든 기본 뷰에 대한 pointInside 메소드를 호출 할 거라고 생각하지만 난 두 가지 방법이 어떻게 든 개인 것을 발견 그것은?)이며 액세스 할 수 없습니다.

아이디어를 없애려면 어떻게해야하나요?

답변

3

터치가 가장보기에 적합한 지 확인할 수 있습니다. 그렇지 않으면 슈퍼 뷰와 동일한 방법으로 호출 할 수 있습니다. [self.superview sameMethod : sameParameter]와 같은 것입니다.

귀하의 최상위보기는 방법 당신이 당신의 논리를 오른쪽으로하고있는 메소드 내부

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 

이있다? 받은 터치

UITouch *touch = [touches anyObject];
[touch locationInView:self];

으로 최상위 뷰에있는 경우 방법 내부 당신은 확인할 수 없습니다 그리고 그것은 당신이 사용하는 수퍼의 같은 방법에 전달하지 않는 경우

[self.superview touchesEnded:touches withEvent:event]; 
+0

오타 : "수퍼"=> "수퍼" – Ralphleon

+0

감사합니다. 그것을 수정했습니다. –

3

접촉이 단일보기로 전송됩니다. 그런 다음 해당 뷰를 선택적으로 응답 체인에 전달할 수 있습니다. 콜렉션의 뷰를 다루고 싶다면, 그 이벤트를 다음 응답자에게 전달하고 모든 컨트롤러의 공통 부모 (또는 컨트롤러가 응답 체인의 일부이기 때문에 View Controller)를 처리해야합니다. 감동.

https://developer.apple.com/library/mac/documentation/General/Devpedia-CocoaApp-MOSX/Responder.html