我正在编写一款基于Swift的Cocoa小应用程序,与Spotlight/QuickSilver/Alfred类似,是一个单窗口应用程序。它被设置为
除了在其处于活动状态时无法使用
我可以理解为什么
我尝试了
我确实存储了对先前活动应用程序的引用,因此如果需要,我可以手动再次激活该应用程序,但我希望有一种更简洁的方法来解决这个问题。
NSApplicationActivationPolicyAccessory
(文档)(尽管我也尝试了使用等效的LSUIElement
)。它通过全局热键激活。除了在其处于活动状态时无法使用
NSRunningApplication.currentApplication().hide()
隐藏应用程序之外,一切正常。
hide
方法的文档表示,“如果应用程序已经退出或者属于无法隐藏的类型,则此值的属性将为NO
”(重点强调),而我得到了一个NO
回复(尽管我实际上使用的是Swift,所以我得到的是false
)。我可以理解为什么
NSApplicationActivationPolicyProhibited
应用程序无法隐藏,因为它从未处于活动状态,但对于NSApplicationActivationPolicyAccessory
来说,这种情况让我感到困惑。我尝试了
myWindow.orderOut(self);
,但这只是隐藏了窗口而没有隐藏我的应用程序并将焦点返回到以前的应用程序。我确实存储了对先前活动应用程序的引用,因此如果需要,我可以手动再次激活该应用程序,但我希望有一种更简洁的方法来解决这个问题。
NSApplication.sharedApplication().hide(nil)
吗?通常情况下,我们会操作应用程序对象(NSApplication
的实例)而不是NSRunningApplication
的实例来操作当前应用程序。 - Ken Thomases