我有一个小的斯威夫特基础上的可可应用程序,我正在编写。这是一个单一的窗口应用程序,有点像聚光灯/水银/阿尔弗雷德。它被设置为NSApplicationActivationPolicyAccessory (文档) (尽管我尝试过使用LSUIElement,这是等价的)。它是通过一个全局热键激活的。
一切都运行得很好,除了当它处于活动状态时,我无法使用NSRunningApplication.currentApplication().hide()隐藏应用程序。
隐藏方法的医生们表示“如果应用程序已经退出,则此值的属性将为NO,如果类型无法隐藏,则为。”(强调我的),我得到了一个NO (虽然我实际上使用的是Swift,所以我得到了false)。
我能理解为什么NSApplicationActivationPolicyProhibited应用程序不可能被隐藏,因为它从来不活跃,但让我感到困惑的是,NSApplicationActivationPolicyAccessory也是如此。
我尝试了myWindow.orderOut(self);,但这只是隐藏了窗口,而没有隐藏我的应用程序并将焦点返回到之前的应用程序。
我确实存储了对以前活动应用程序的引用,所以如果需要的话,我可以再次手动激活该应用程序,但我希望有一个更干净的方法来做到这一点。
发布于 2015-06-18 21:57:51
使用NSApplication.sharedApplication().hide(nil)。人们通常会寻址应用程序对象(NSApplication的实例),而不是在当前应用程序上操作的NSRunningApplication实例。
发布于 2015-06-18 19:16:18
手动解决方案是存储对以前活动的NSRunningApplication实例的引用(下面称为previouslyActiveApplication ),然后当您想要停用NSApplicationActivationPolicyAccessory应用程序时激活它,如下所示:
previouslyActiveApplication!.activateWithOptions(NSApplicationActivationOptions.ActivateIgnoringOtherApps);https://stackoverflow.com/questions/30923271
复制相似问题