我有兩個NSView在彼此之上。一個NSView提供了一個包含行的表格。點擊一行後,另一個視圖會顯示在該視圖的頂部。如何禁用點擊後到另一個NSView後面的NSView
現在的問題是,當我點擊第二個視圖上的一個區域,在NSView底部有一行時,點擊它。我怎麼能阻止呢?
感謝
我有兩個NSView在彼此之上。一個NSView提供了一個包含行的表格。點擊一行後,另一個視圖會顯示在該視圖的頂部。如何禁用點擊後到另一個NSView後面的NSView
現在的問題是,當我點擊第二個視圖上的一個區域,在NSView底部有一行時,點擊它。我怎麼能阻止呢?
感謝
您可以啓用在頂視圖觸摸和鼠標事件被呈現時:
topView.acceptsTouchEvents = YES;
topView.acceptsFirstMouse = YES;
編輯:的評論是正確的,acceptsFirstMouse
不是屬性,而且必須在子類中更新。
子類和執行acceptsFirstMouse
在視圖中,返回YES
。此外,在該視圖中設置acceptsTouchEvents
到YES
。
不適合我 – zic10 2016-05-12 15:39:53
在您的頂級視圖中,在該視圖中實施mouseDown:
,並且不要調用nextResponder或者在其中執行任何操作。
- (void)mouseDown:(NSEvent *)theEvent{
//Do nothing to not propagate the click event to descendant views
}
我和OP有完全相同的場景,這對我來說是按照預期工作的。信貸的答案,我發現here,導致我這樣做。
我剛剛嘗試過,並沒有奏效。我無法在NSView上找到accepFirstMouse屬性。 – Leo 2012-07-13 18:40:20
@PeterDeWeese,它似乎你必須繼承和'acceptFirstMouse'返回YES,因爲它不是NSView的屬性。 – CodaFi 2012-07-13 19:10:00
不知道這件事,但我通過改變設計解決了我的問題。謝謝 – Leo 2012-07-13 20:06:18