我正在阅读 this 苹果文档中关于 MacOS 中 MenuBarExtra 的内容,它指出:
必要时,系统会隐藏菜单栏附加内容,为应用程序腾出空间 菜单。同样,如果菜单栏附加内容过多,系统也会 可能会隐藏一些以避免拥挤的应用程序菜单。
我正在使用 MenuBarExtra 的 Appkit 实现,并且想知道如何识别系统是否隐藏/取消隐藏我的 menuBarExtra。系统隐藏时是否收到一些事件?
首先,您需要对保存该状态项的
NSWindow
进行引用。你可以这样得到:
statusItem.button?.window
然后,您会想听一些与该窗口相关的
NSNotification
。例如,我们听:
NSWindow.didChangeScreenNotification
NSWindow.didMoveNotification
NSWindow.didResizeNotification
NSWindow.didChangeOcclusionStateNotification
理论上,只需要最后一个(https://developer.apple.com/documentation/appkit/nswindow/1419549-didchangeocclusionstatenotificat),实际上,但我们也有其他一些用例。
然后,收到通知后,您可以通过执行以下操作来检查遮挡情况:
window.occlusionState.contains(.visible)