【发布时间】:2015-06-18 18:42:01
【问题描述】:
我正在编写一个基于 Swift 的小型 Cocoa 应用程序。这是一个单窗口应用程序,类似于 Spotlight/QuickSilver/Alfred。它被设置为NSApplicationActivationPolicyAccessory (docs) (虽然我用LSUIElement 尝试过同样的事情,这是等价的)。它是通过全局热键激活的。
一切正常,除了当它处于活动状态时,我无法使用NSRunningApplication.currentApplication().hide() 隐藏应用程序。
The docs 对于 hide 方法说“如果应用程序已经退出,或者 如果是无法隐藏的类型,则该值的属性将是 NO。” (强调我的),我得到了一个NO 回来(虽然我实际上使用的是 Swift,所以我得到了false)。
我可以理解为什么 NSApplicationActivationPolicyProhibited 应用程序无法被隐藏,因为它从未处于活动状态,但让我感到困惑的是 NSApplicationActivationPolicyAccessory 也会出现这种情况。
我尝试了myWindow.orderOut(self);,但这只是隐藏了窗口,而没有隐藏我的应用程序并将焦点返回到前一个应用程序。
我确实存储了对先前活动应用程序的引用,因此如果需要,我可以再次手动激活该应用程序,但我希望有一种更简洁的方法来执行此操作。
【问题讨论】:
-
你试过
NSApplication.sharedApplication().hide(nil)吗?通常会针对应用程序对象(NSApplication的实例)而不是NSRunningApplication的实例来处理当前应用程序。 -
@KenThomases 做到了!谢谢!你能把这个写成答案,以便我把它标记为正确的吗?