当我的弹出窗口打开时,如何防止菜单栏向下移动?
我有一个应用程序出现在状态栏项目上的弹出窗口。问题是,当您在全屏应用程序中单击图标时,然后将鼠标从菜单栏移开以单击弹出窗口中的某些内容,菜单栏向上移动,弹出窗口也会移动。它很烦人。当我的弹出窗口打开时,如何防止菜单栏向下移动?
任何人都知道任何方式来解决这个问题?我试图在弹出窗口中附加一个不可见的菜单,但是我无法使菜单看不见。
截图为清楚起见,恼人的部分是我挥一挥鼠标左右:
弹出式窗口正在移动,因为其父窗口是状态项窗口,而当父窗口移动时,子窗口随之移动。 (我调查此之前,我甚至不知道可可有父母和孩子的窗口。)我解决了这个代码的问题显示酥料饼后:
NSWindow *popoverWindow = self.popup.contentViewController.view.window;
[popoverWindow.parentWindow removeChildWindow:popoverWindow];
现在,菜单栏依然向上移动,但至少弹出窗口保持在同一个地方。
超级哈克方法:
自定义窗口,一些超高窗位,使它会出现在菜单栏上,然后在新窗口中添加一个透明的自定义视图,以根据需要捕捉和处理/阻止鼠标点击。
或者:
获取酥料饼的使用,显示和跟踪/处理NSWindowWillMoveNotification
/NSWindowDidMoveNotification
窗口实例。
要么使用Carbon events或观赏的东西发生在菜单栏(NSStatusBarWindow
类型的窗口):
通知
NSWindowDidChangeOcclusionStateNotification
NSWindowDidMoveNotification
NSWindowWillCloseNotification
NSWindowDidCloseNotification
与类NSStatusBarWindow
的对象应该给你足够的信息显示或隐藏菜单栏添加适当的处理。
什么是正确的处理?困难的部分没有发现状态项目何时移动,它阻止了弹出窗口的移动。 – tbodt
顺便说一句 - 你不仅会在全屏时遇到这个问题。在10.11版本中,可以始终自动隐藏菜单栏: http://www.tekrevue.com/tip/hide-menu-bar-os-x-el-el-capitan/ – cacau
您可能想查看此主题,听起来像一个干净的解决方案,您的问题: http://*.com/questions/35008501/detect-if-menu-bar-is-hidden-or-visible – Jay