내 문제 :EditView
기본적으로 전체 애플리케이션 프레임을 차지하는 수퍼 뷰 와 MenuView
하단 ~ 20 % 만 차지하는 MenuView
하위 뷰가 ButtonView
있으며 실제로 MenuView
의 경계 밖에있는 자체 하위 뷰 를 포함합니다 (예 :) ButtonView.frame.origin.y = -100
.
(참고 : 의 뷰 계층 구조의 EditView
일부가 MenuView
아니지만 답변에 영향을 미칠 수있는 다른 하위 뷰가 있습니다 .)
이미이 문제를 알고있을 것입니다 ButtonView
. 범위 내에 있을 때 MenuView
(또는 더 구체적으로 내 터치가 MenuView
의 범위 내에있을 때 ) ButtonView
는 터치 이벤트에 응답합니다. 내 터치가 MenuView
의 범위를 벗어 났지만 여전히 ButtonView
의 범위 내에 있으면에서 터치 이벤트를받지 않습니다 ButtonView
.
예:
- (E)는
EditView
모든보기의 상위입니다. - (M)은
MenuView
EditView의 하위보기입니다. - (B)는
ButtonView
MenuView의 하위보기입니다.
도표:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
(B)가 (M)의 프레임 밖에 있기 때문에 (B) 영역의 탭은 (M)으로 전송되지 않습니다. 사실, (M)은이 경우 터치를 분석하지 않으며 터치는 계층 구조의 다음 개체.
목표 : 재정의 hitTest:withEvent:
가이 문제를 해결할 수 있다고 생각 하지만 정확히 어떻게해야하는지 모르겠습니다. 제 경우에는 (내 '마스터'수퍼 뷰) hitTest:withEvent:
에서 재정의 해야 EditView
합니까? 아니면 MenuView
터치를받지 않는 버튼의 직접 수퍼 뷰 인 에서 재정의해야 합니까? 아니면 이것에 대해 잘못 생각하고 있습니까?
긴 설명이 필요하다면 좋은 온라인 리소스가 도움이 될 것입니다. Apple의 UIView 문서를 제외하고는 분명하지 않습니다.
감사!