2012-07-13 25 views
9

Tôi có hai NSView trên đầu trang của nhau. Một NSView trình bày một bảng có các hàng. Khi nhấp vào một hàng, một chế độ xem khác sẽ được hiển thị ở đầu chế độ xem đó.Cách vô hiệu hóa Nhấp qua NSView phía sau một NSView

Bây giờ vấn đề là khi tôi bấm vào một khu vực trên xem thứ hai, nơi có một hàng trên bên dưới NSView sau đó nó được nhấp. Làm thế nào tôi có thể ngăn chặn điều đó?

Cảm ơn

Trả lời

-8

Bạn có thể bật cảm ứng và các sự kiện chuột trong giao diện hàng đầu khi nó được trình bày:

topView.acceptsTouchEvents = YES; 
topView.acceptsFirstMouse = YES; 

Edit: nhận xét là đúng rằng acceptsFirstMouse không phải là một tài sản, và phải được cập nhật trong một lớp con.

+0

Tôi vừa thử điều đó và nó không hoạt động. Tôi không thể tìm thấy thuộc tính acceptFirstMouse trên NSView. – Leo

+2

@PeterDeChúng tôi, có vẻ như bạn phải phân lớp và trả về YES trong 'acceptFirstMouse' vì nó không phải là tài sản của NSView. – CodaFi

+0

Không có ý tưởng về những chaps này nhưng tôi đã giải quyết được vấn đề của tôi bằng cách thay đổi thiết kế. Cảm ơn – Leo

0

Phân lớp và triển khai acceptsFirstMouse trong chế độ xem, trả lại YES. Ngoài ra, hãy đặt acceptsTouchEvents thành YES trong chế độ xem đó.

+0

không hoạt động đối với tôi – zic10

3

Ở chế độ xem cấp cao nhất của bạn, hãy triển khai mouseDown: trong chế độ xem đó và không gọi nextResponder hoặc làm bất cứ điều gì trong đó.

- (void)mouseDown:(NSEvent *)theEvent{ 
    //Do nothing to not propagate the click event to descendant views 
} 

Tôi có cùng một kịch bản giống như OP và cách này hoạt động với tôi như dự định. Tín dụng cho câu trả lời tôi tìm thấy here đã dẫn tôi đến điều này.

Các vấn đề liên quan