打开弹出框时,如何防止菜单栏向下移动?

tbo*_*odt 8 cocoa fullscreen menubar nspopover

我有一个带有弹出框的应用程序,它出现在状态栏项目上.问题是,当你在全屏应用程序中点击图标时,然后将鼠标从菜单栏移​​开以点击弹出窗口中的内容,菜单栏向上移动,弹出窗口也是如此.它很烦人.

有谁知道解决这个问题的方法?我尝试将一个隐形菜单附加到弹出窗口,但我不能让菜单看不见.

屏幕截图为清晰,恼人的部分是我挥动鼠标的地方:

在此输入图像描述

tbo*_*odt 5

弹出窗口是移动的,因为它的父窗口是状态项窗口,当父窗口移动时,子窗口也随之移动。(在我调查这个之前,我什至不知道 Cocoa 有父窗口和子窗口。)我在显示弹出窗口后立即用这段代码解决了这个问题:

NSWindow *popoverWindow = self.popup.contentViewController.view.window;
[popoverWindow.parentWindow removeChildWindow:popoverWindow];
Run Code Online (Sandbox Code Playgroud)

现在,菜单栏仍然向上移动,但至少弹出窗口保持在同一位置。