检测菜单栏是隐藏还是可见

时间:2016-01-26 07:05:53

标签: objective-c cocoa menubar

当菜单栏隐藏或可见时,Cocoa中是否有办法接收通知(或类似的东西)?我试过四处寻找并且没有找到关于这个主题的任何信息。

由于

4 个答案:

答案 0 :(得分:2)

我通过使用Carbon的菜单事件处理程序解决了这个问题。

我在课程kEventMenuBarHidden下注册了活动kEventMenuBarShownkEventClassMenu

答案 1 :(得分:2)

(可选)注意类NSStatusBarWindow对象的(Cocoa)通知和

等通知

在显示或隐藏菜单栏时收到通知。

答案 2 :(得分:0)

如果只需要菜单栏的当前状态,另一种方法是使用visibleFrame property of NSScreen

  

返回的矩形始终基于当前的用户界面设置,并且不包括停靠栏和菜单栏当前占用的区域。

但是,仅当您需要通知菜单栏可见性更改时,这本身还不够。

答案 3 :(得分:0)

我相信正确的方法是使用键值观察(KVO)来观察应用程序对象的presentationOptionscurrentSystemPresentationOptions属性(NSApp或{{1} }。更改后,检查其值以查看它是否包含[NSApplication sharedApplication]NSApplicationPresentationHideMenuBar。如果是这样,则菜单被隐藏(或在光标不在主屏幕顶部附近时隐藏。

NSApplicationPresentationAutoHideMenuBarpresentationOptions之间的区别在于您是否对调用应用程序是否隐藏了其菜单栏或活动应用程序(可能是另一个应用程序)是否隐藏了其菜单栏感兴趣。 。后者指示用户是否可以看到任何菜单栏。