0

我正在调用一些需要在继续之前检测鼠标是否在(主)菜单栏上的方法。我该如何定义这样的方法- (BOOL)isMouseOverMenu

我想确保鼠标实际上在菜单栏中,因此,当应用程序全屏、隐藏菜单或鼠标位于第二台显示器上菜单栏的相同坐标时,它应该返回 false没有菜单栏。如果它位于菜单栏中的任何其他项目上,它也应该返回 true,但不一定在弹出菜单中。

注意:当它触发时,我的窗口并不总是关键窗口。

4

1 回答 1

1

根据NSMenu文档,NSMenuDidBeginTrackingNotification在菜单跟踪开始时发布。

为这个通知添加一个观察者,只要鼠标悬停在菜单上,你就会收到通知。

更新:

我不认为这是可以做到的。NSMenuDidBeginTrackingNotification仅当用户单击菜单而不是鼠标悬停在菜单上时才会发布。

NSMenu不是从其中派生的,NSResponder因此无法通过覆盖其中一种鼠标方法来检测它。

我认为这是一个错误,因为在 Apple 文档中将鼠标跟踪定义为光标位于没有按下按钮的矩形区域上。如果没有其他解决方案浮出水面,我将考虑提交错误报告。

于 2012-06-16T17:17:33.810 回答