2015-01-23 6 views
1

다소 복잡한 뷰 계층 구조가 있습니다. 내가 겪고있는 문제는 형제가되는 몇 가지 견해가 있으며,이 견해는 화면에서 이동할 수 있다는 것입니다. 내 코드는 뷰가 다른 모든 형제 위에 시각적으로 표시되도록 이동할 때마다 일부 하위 뷰를 다시 정렬합니다.터치 이벤트를 먼저 받으면 형제보기가 다른 형제보기 뒤에 시각적으로 표시되는 이유는 무엇입니까?

내 문제는보기가 시각적으로 다른보기 위에있을 때 실제보기가 실제로 먼저 나타나는보기입니다. 아무도이 같은 행동을 일으킬 수있는 것을 알고 있습니까? 누군가 비슷한 경험을했을 수도 있습니다. 사전에

감사합니다,

답변

1

그것은 이러한 전망의 수퍼 대한 hitTest은 단순히 subviews 배열을 통해 반복과 비 nil로 응답 첫 번째를 선택하는 것이 나의 이해이다. subviews 목록에서 이전에 정렬 된보기가 먼저 그려지며, 이는 다른보기 아래에 시각적으로 표시됨을 의미합니다.

1

좋아요. 문제를 알아 냈으니 다른 사람이이 문제를 발견 한 경우 내 자신의 질문에 답변 해 드리겠습니다.

이 문제는 내 형제 자매가 앉아있는 내 superviews와 관련이 있습니다.이 superview는 hitTest : 메소드를 재정의하고 하위 순서를 순방향으로 반복합니다. Apple은 hitTest : 메서드가 하위 뷰를 역순으로 반복해야한다고 분명하게 명시합니다. 따라서 루프를 업데이트하여 역순으로 진행하면 문제가 해결됩니다.

역순으로 진행하는 이유는 간단합니다. 하위보기가 추가 될 때마다 하위보기 배열의 끝에 추가되고 다른 모든 하위보기 위에 시각적으로 배치됩니다. 그래서 화면에서 가장 많이 보는 부분은 서브 뷰 배열의 마지막 뷰입니다. 그래서 역순으로 진행해야합니다.

희망 사항은이 동작에 걸림돌이되는 사람에게 도움이되기를 바랍니다.