我有一系列的嵌套視圖,我需要捕捉mouseDown事件螞蟻做同樣的事情時,任何這些意見被選中。有沒有辦法告訴superview處理子視圖的事件?處理這個問題的最佳方法是在所有其他視圖之上放置透明視圖,並讓該視圖處理事件?捕捉子視圖的mouseDown事件。 (Cocoa osx)
2
A
回答
2
你的子視圖是否定義了自己的mouseDown:
?
如果他們還沒有定義他們自己的-[… mouseDown:(id)event]
,那麼他們應該已經將他們的事件傳遞給響應者鏈,這應該到達你的超級視圖。
否則,(除了他們需要做的任何其他處理之外),他們需要決定超級視圖應該接收哪些事件,併爲這些事件調用[super mouseDown:event]
。
1
在超級視圖中,如果該點位於超級視圖的矩形中,則可以重寫hitTest以返回超級視圖。這將阻止鼠標事件進入任何子視圖。
- (NSView *)hitTest:(NSPoint)aPoint
{
return NSPointInRect(aPoint, self.frame) ? self : nil;
}
請注意,aPoint是在超級視圖的「框架」座標系中,而不是它的邊界。
+0
不幸的是,這似乎從10.8開始停止工作 – George
0
該版本適用於將在屏幕上表達了點的座標:
NSPointInRect([view convertPoint:[[view window] convertScreenToBase:point] fromView:nil], [view bounds]);
相關問題
- 1. 捕捉子視圖觸摸事件
- 2. 在Cocoa OSX中捕捉雙擊
- 3. 如何捕捉控制器中的子視圖事件?
- 4. 捕捉事件
- 5. 捕捉事件
- 6. Mac OSX中視頻捕捉的選擇?
- 7. C#Tabcontrol捕獲mousedown事件
- 8. 處理事件mouseDown和mouseUp在Cocoa
- 9. 如何捕捉視頻的事件ExitFullScreen?
- 10. 在Cocoa中捕捉未處理的鍵盤事件
- 11. 不允許UIScrollView捕捉子視圖
- 12. 如何在Android上捕捉圖像捕捉事件?
- 13. 如何最好地捕捉OSX的睡眠和恢復事件?
- 14. Cocoa - 捕獲特定事件
- 15. 如何捕捉NSImageView上的點擊事件作爲NSTableRowView中的子視圖?
- 16. 捕獲.NET TextBox的MouseDown事件
- 17. 捕獲jouery排序的mousedown事件
- 18. 膨脹的視圖不捕捉onClick事件
- 19. 如何捕捉視圖中的mousewheel事件?
- 20. 捕捉圖像截斷事件
- 21. Cytoscape JS:捕捉圖形'boxend'事件
- 22. 捕獲視圖控制器中的子視圖類的事件
- 23. Windows 8捕捉視圖Caliburn.Micro
- 24. 捕捉HID鍵盤事件
- 25. 捕捉onclick adsense事件?
- 26. 事件 - 只捕捉Qt.Key_Delete
- 27. 如何捕捉dojox.mobile.view事件?
- 28. 捕捉縮小事件
- 29. 捕捉鼠標事件
- 30. 捕捉鼠標事件
默認'鼠標按下:'在NSResponder類已經將事件轉發到下一個響應者。你的子視圖是什麼類?你可以編輯它們,還是預定義的(UI控件等)? –
我的子視圖是自定義的NSViews。 – Mike2012