2012-06-16 33 views
0

我打电话给一些方法,它需要检测鼠标是否在(主)菜单栏之前继续。我怎样才能定义这样一种方法- (BOOL)isMouseOverMenu如何检测鼠标是否在菜单栏上?

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

注:我的窗口不会永远是当这种火灾的重要窗口。

回答

0

按照NSMenu文档NSMenuDidBeginTrackingNotification菜单跟踪开始时公布。

添加观察员此通知,每当鼠标在菜单中,您应通知。

更新:

我不认为这是可以做到。 NSMenuDidBeginTrackingNotification仅在用户单击菜单时发布,而不是在鼠标简单地位于该菜单上时发布。

NSMenu不是从NSResponder派生的,所以不可能通过重写一个鼠标方法来检测它。

我认为这是一个错误如鼠标跟踪在苹果文档定义为光标被过度与无按钮的矩形区域。如果没有其他解决方案,我会考虑提交错误报告。

+0

是的,我试着加入那个观察者,并让选择器日志“结束”。只有当我点击菜单时,它才会登录。也许我做错了什么? – Bryan

+0

我使用的'object'是'object:[NSApp mainMenu]'。 – Bryan

+0

看起来你正在做正确的事情。我有一个示例项目和'跟踪'只有当你点击菜单栏时才起作用。看起来NSMenu文档有些误导,因为我认为鼠标在菜单项上作为跟踪。我不知道如何解决这个问题,因为NSMenu不是从NSResponder派生的,所以我想不出任何其他方式来检测这些信息。 –

相关问题