Vấn đề của tôi: Tôi có một chế độ EditViewxem siêu cấp chiếm cơ bản toàn bộ khung ứng dụng và một chế độ MenuViewxem phụ chỉ chiếm phần dưới cùng ~ 20%, sau đó MenuViewchứa chế độ xem phụ của chính ButtonViewnó thực sự nằm ngoài MenuViewgiới hạn của nó (đại loại như thế này ButtonView.frame.origin.y = -100:).
(lưu ý: EditViewcó các MenuViewchế độ 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 ButtonViewnằ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 MenuViewgiới hạn), ButtonViewphả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 MenuViewgiới hạn (nhưng vẫn nằm trong ButtonViewgiới hạn), không có sự kiện chạm nào được nhận ButtonView.
Thí dụ:
- (E) là
EditViewcha 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!