首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mac -如何以编程方式隐藏NSApplicationActivationPolicyAccessory或LSUIElement应用程序?

Mac -如何以编程方式隐藏NSApplicationActivationPolicyAccessory或LSUIElement应用程序?
EN

Stack Overflow用户
提问于 2015-06-18 18:42:01
回答 2查看 1.9K关注 0票数 3

我有一个小的斯威夫特基础上的可可应用程序,我正在编写。这是一个单一的窗口应用程序,有点像聚光灯/水银/阿尔弗雷德。它被设置为NSApplicationActivationPolicyAccessory (文档) (尽管我尝试过使用LSUIElement,这是等价的)。它是通过一个全局热键激活的。

一切都运行得很好,除了当它处于活动状态时,我无法使用NSRunningApplication.currentApplication().hide()隐藏应用程序。

隐藏方法的医生们表示“如果应用程序已经退出,则此值的属性将为NO,如果类型无法隐藏,则为。”(强调我的),我得到了一个NO (虽然我实际上使用的是Swift,所以我得到了false)。

我能理解为什么NSApplicationActivationPolicyProhibited应用程序不可能被隐藏,因为它从来不活跃,但让我感到困惑的是,NSApplicationActivationPolicyAccessory也是如此。

我尝试了myWindow.orderOut(self);,但这只是隐藏了窗口,而没有隐藏我的应用程序并将焦点返回到之前的应用程序。

我确实存储了对以前活动应用程序的引用,所以如果需要的话,我可以再次手动激活该应用程序,但我希望有一个更干净的方法来做到这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-18 21:57:51

使用NSApplication.sharedApplication().hide(nil)。人们通常会寻址应用程序对象(NSApplication的实例),而不是在当前应用程序上操作的NSRunningApplication实例。

票数 6
EN

Stack Overflow用户

发布于 2015-06-18 19:16:18

手动解决方案是存储对以前活动的NSRunningApplication实例的引用(下面称为previouslyActiveApplication ),然后当您想要停用NSApplicationActivationPolicyAccessory应用程序时激活它,如下所示:

代码语言:javascript
复制
previouslyActiveApplication!.activateWithOptions(NSApplicationActivationOptions.ActivateIgnoringOtherApps);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30923271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档