Objective c 在NSStatusBar中自动显示NSPover

Objective c 在NSStatusBar中自动显示NSPover,objective-c,macos,nspopover,Objective C,Macos,Nspopover,我试图在用户第一次安装我的应用程序时,使NSPopover自动显示在状态栏的图标下方。就像谷歌硬盘一样: 我使用的正是上面提到的方法,它非常适合手动显示popover(例如,在用户单击时)。为了让popover自动显示,我在ApplicationIDFinishLaunching方法的末尾添加了以下行:[self.controller menuletClicked:1]它调用showRelativeToRect…现在这有时非常有效(popover显示在状态栏图标的正下方),但其他时候,弹出框会

我试图在用户第一次安装我的应用程序时,使NSPopover自动显示在状态栏的图标下方。就像谷歌硬盘一样:

我使用的正是上面提到的方法,它非常适合手动显示popover(例如,在用户单击时)。为了让popover自动显示,我在
ApplicationIDFinishLaunching
方法的末尾添加了以下行:
[self.controller menuletClicked:1]
它调用
showRelativeToRect…
现在这有时非常有效(popover显示在状态栏图标的正下方),但其他时候,弹出框会出现在我屏幕的左下角。如果我等待几秒钟,然后执行该行代码(例如,通过
dispatch\u after…
),它的工作会更加一致。但偶尔还是会失败,并显示在我的屏幕底部

这表示有些东西还没有“准备好”?(如本文所建议的)-但是我已经检查了popover对象不是nil,并且矩形的边界看起来不错。我还添加了一个loadView来尝试强制加载,但似乎没有任何效果

让NSPover自动显示的正确方法是什么?或者如何确保它出现在正确的地方?谢谢