我正在调用一些需要在继续之前检测鼠标是否在(主)菜单栏上的方法。我该如何定义这样的方法- (BOOL)isMouseOverMenu
?
我想确保鼠标实际上在菜单栏中,因此,当应用程序全屏、隐藏菜单或鼠标位于第二台显示器上菜单栏的相同坐标时,它应该返回 false没有菜单栏。如果它位于菜单栏中的任何其他项目上,它也应该返回 true,但不一定在弹出菜单中。
注意:当它触发时,我的窗口并不总是关键窗口。
我正在调用一些需要在继续之前检测鼠标是否在(主)菜单栏上的方法。我该如何定义这样的方法- (BOOL)isMouseOverMenu
?
我想确保鼠标实际上在菜单栏中,因此,当应用程序全屏、隐藏菜单或鼠标位于第二台显示器上菜单栏的相同坐标时,它应该返回 false没有菜单栏。如果它位于菜单栏中的任何其他项目上,它也应该返回 true,但不一定在弹出菜单中。
注意:当它触发时,我的窗口并不总是关键窗口。
根据NSMenu文档,NSMenuDidBeginTrackingNotification
在菜单跟踪开始时发布。
为这个通知添加一个观察者,只要鼠标悬停在菜单上,你就会收到通知。
更新:
我不认为这是可以做到的。NSMenuDidBeginTrackingNotification
仅当用户单击菜单而不是鼠标悬停在菜单上时才会发布。
NSMenu
不是从其中派生的,NSResponder
因此无法通过覆盖其中一种鼠标方法来检测它。
我认为这是一个错误,因为在 Apple 文档中将鼠标跟踪定义为光标位于没有按下按钮的矩形区域上。如果没有其他解决方案浮出水面,我将考虑提交错误报告。