2012-07-13 65 views
9

我有兩個NSView在彼此之上。一個NSView提供了一個包含行的表格。點擊一行後,另一個視圖會顯示在該視圖的頂部。如何禁用點擊後到另一個NSView後面的NSView

現在的問題是,當我點擊第二個視圖上的一個區域,在NSView底部有一行時,點擊它。我怎麼能阻止呢?

感謝

回答

-8

您可以啓用在頂視圖觸摸和鼠標事件被呈現時:

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

編輯:的評論是正確的,acceptsFirstMouse不是屬性,而且必須在子類中更新。

+0

我剛剛嘗試過,並沒有奏效。我無法在NSView上找到accepFirstMouse屬性。 – Leo 2012-07-13 18:40:20

+2

@PeterDeWeese,它似乎你必須繼承和'acceptFirstMouse'返回YES,因爲它不是NSView的屬性。 – CodaFi 2012-07-13 19:10:00

+0

不知道這件事,但我通過改變設計解決了我的問題。謝謝 – Leo 2012-07-13 20:06:18

0

子類和執行acceptsFirstMouse在視圖中,返回YES。此外,在該視圖中設置acceptsTouchEventsYES

+0

不適合我 – zic10 2016-05-12 15:39:53

3

在您的頂級視圖中,在該視圖中實施mouseDown:,並且不要調用nextResponder或者在其中執行任何操作。

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

我和OP有完全相同的場景,這對我來說是按照預期工作的。信貸的答案,我發現here,導致我這樣做。