Tôi hiểu hành vi mong muốn mà bạn đang tìm kiếm Joey - Tôi chưa tìm thấy thứ gì đó trong API hỗ trợ hành vi nhắn tin tự động này với chế độ xem anh chị em.
Điều tôi viết ban đầu dưới đây là liên quan đến việc chỉ thông báo cho phụ huynh UIView về một lần chạm. Điều này vẫn áp dụng, nhưng tôi tin rằng bạn cần phải tiến thêm một bước nữa và yêu cầu cha mẹ UIView sử dụng kỹ thuật thử nghiệm hit mà Sergio mô tả trên mỗi tiểu sử của nó là anh chị em của lớp phủ và có cha mẹ UIView tự gọi một cái gì đó "phương pháp trên mỗi tiểu thuyết của nó mà vượt qua các bài kiểm tra hit. Mỗi người trong số những quan điểm anh chị em này có thể trả lại giá trị BOOL về việc có nên hủy thông báo cho anh chị em khác hoặc tiếp tục chuỗi.
Nếu bạn thấy mình sử dụng mẫu này rất nhiều, hãy cân nhắc thêm phương pháp danh mục trên UIView đóng gói thử nghiệm lần truy cập và yêu cầu xem để thực hiện công cụ chọn.
My Original trả lời
Với một chút công việc thủ công, bạn có thể dây này cùng chính mình. Tôi đã phải làm điều này, và nó làm việc cho tôi, bởi vì tôi đã có một trường hợp sử dụng lặp đi lặp lại (một cái nhìn lớp phủ trên một nút), nơi nó có ý nghĩa để tạo ra một số lớp tùy chỉnh. Nếu tình huống của bạn là tương tự, một trong những kỹ thuật này sẽ đủ.
Lựa chọn 1: Nếu lớp phủ không cần phải làm bất cứ điều gì nhưng nhìn khá, có nó không tham gia vào xử lý hoàn toàn với userInteractionEnabled = NO
cảm ứng. Điều này sẽ làm cho nó để các sự kiện liên lạc đi đến nó là cha mẹ UIView (một trong đó là một lớp phủ để).
Phương án 2: Có lớp phủ hấp thụ sự kiện liên lạc (vì nó sẽ theo mặc định), và sau đó gọi một phương thức trên UIView mẹ chỉ ra rằng một liên lạc hoặc cử chỉ nào đó đã được công nhận, và đây là nó là gì. Bằng cách này, UIView đằng sau lớp phủ vẫn được thực hiện trên sự công nhận cảm ứng, ngay cả khi người khác đã thực hiện việc chặn.
Với tùy chọn 2, nó phù hợp hơn với các loại đơn giản UIControlEvent
đơn giản, như UIControlEventTouchDown
và UIControlEventTouchUpInside
.Trong trường hợp của tôi (một lớp con tùy chỉnh UIButton
với chế độ xem lớp phủ tùy chỉnh ở trên cùng), tôi sẽ chạm vào dây và chạm vào các sự kiện trên nút đến hai phương pháp riêng biệt. Những đám cháy nếu chạm xuống hoặc chạm vào bên trong sự kiện xảy ra trên nút chính nó. Nhưng, chúng cũng là móc mà tôi có thể gọi từ chế độ xem lớp phủ nếu tôi cần mô phỏng rằng một lần nhấn nút xảy ra.
Tùy thuộc vào nhu cầu của bạn, bạn có thể có giao thức đã biết giữa lớp phủ và đó là UIView gốc hoặc chỉ có lớp phủ kiểm tra UIView một cách không chính thức, với kiểm tra respondsToSelector:
trước khi gọi performSelector:
trên đó bằng phương thức tùy chỉnh mà bạn muốn gọi đã tự động kích hoạt nếu UIView không bị che phủ bởi lớp phủ.