Vấn đề của tôi: Tôi có một chế độ EditView
xem siêu cấp chiếm cơ bản toàn bộ khung ứng dụng và một chế độ MenuView
xem phụ chỉ chiếm phần dưới cùng ~ 20%, sau đó MenuView
chứa chế độ xem phụ của chính ButtonView
nó thực sự nằm ngoài MenuView
giới hạn của nó (đại loại như thế này ButtonView.frame.origin.y = -100
:).
(lưu ý: EditView
có các MenuView
chế độ xem phụ khác không thuộc hệ thống phân cấp chế độ xem của, nhưng có thể ảnh hưởng đến câu trả lời.)
Có thể bạn đã biết vấn đề: khi nào ButtonView
nằm trong giới hạn MenuView
(hoặc cụ thể hơn là khi những lần chạm của tôi nằm trong MenuView
giới hạn), ButtonView
phản hồi với các sự kiện chạm. Khi các lần chạm của tôi nằm ngoài MenuView
giới hạn (nhưng vẫn nằm trong ButtonView
giới hạn), không có sự kiện chạm nào được nhận ButtonView
.
Thí dụ:
- (E) là
EditView
cha của tất cả các chế độ xem - (M) là
MenuView
, một lượt xem phụ của EditView - (B) là
ButtonView
, một chế độ xem phụ của MenuView
Biểu đồ:
+------------------------------+
|E |
| |
| |
| |
| |
|+-----+ |
||B | |
|+-----+ |
|+----------------------------+|
||M ||
|| ||
|+----------------------------+|
+------------------------------+
Bởi vì (B) nằm ngoài khung của (M), một lần nhấn trong vùng (B) sẽ không bao giờ được gửi đến (M) - trên thực tế, (M) không bao giờ phân tích lần chạm trong trường hợp này và lần chạm được gửi đến đối tượng tiếp theo trong hệ thống phân cấp.
Mục tiêu: Tôi thu thập rằng ghi đè hitTest:withEvent:
có thể giải quyết vấn đề này, nhưng tôi không hiểu chính xác cách thức. Trong trường hợp của tôi, có nên hitTest:withEvent:
được ghi đè trong EditView
(chế độ xem siêu cấp 'chính' của tôi) không? Hay nó nên được ghi đè vào MenuView
, chế độ xem trực tiếp của nút không nhận được cảm ứng? Hay tôi đang nghĩ về điều này không chính xác?
Nếu điều này cần một lời giải thích dài dòng, thì một nguồn tài liệu trực tuyến tốt sẽ rất hữu ích - ngoại trừ tài liệu UIView của Apple, tài liệu này không làm rõ điều đó với tôi.
Cảm ơn!