我试图让NSPopover自动显示在状态栏中的图标下方,这是用户第一次安装我的应用程序。像谷歌驱动器一样:
我使用的是code提到的this answer,它非常适合手动显示弹出框(例如用户点击)。为了让popover自动显示,我在applicationDidFinishLaunching
方法的末尾添加了以下行:[self.controller menuletClicked:1]
调用showRelativeToRect...
现在,这有时完美无缺(弹出窗口出现在状态栏中的图标),但有时弹出窗口会显示在屏幕的左下方。如果我等待几秒然后执行该行代码(例如通过dispatch_after...
),它的工作更加一致。但仍然偶尔失败并显示在我的屏幕底部。
这表明某些东西没有“准备好”? (正如在这个question中所建议的那样) - 但是我检查了popover对象不是nil,并且矩形的边界看起来很好。我还添加了一个loadView来尝试强制加载,但似乎没有任何效果!
让NSPopover自动显示的正确方法是什么?或者如何确保它出现在正确的位置?谢谢!