如何将焦点转移到Cocoa中的先前应用程序?

时间:2009-12-25 03:24:27

标签: objective-c cocoa macos

我们说用户目前在Chrome上。所以我有一个由全局热键调用的HUD,然后用户在其中键入内容,单击Close或OK,HUD消失(仅使用[NSPanel orderOut:])但我的应用程序仍然是焦点(即菜单)我的申请栏仍然可见)。但我希望重点回到原始应用程序Chrome。我如何实现这样的目标?理想情况下,我也永远不会“专注”我的应用程序,因此,HUD输入将全部发生,而Chrome仍然是专注的应用程序。 Things.app设法实现这样的目标。 Quicksilver也是这样做的。

4 个答案:

答案 0 :(得分:7)

致电[NSApp hide:]

这将隐藏您的应用程序并激活以前活动的应用程序。

答案 1 :(得分:2)

为了永远不要关注NSPanel上的应用程序调用{​​{1}},或者在Interface Builder中检查NSPanel上的 Non Activating 复选框。

答案 2 :(得分:1)

您可以拥有一个匿名帮助应用程序,为您执行此操作,或者在您前进之前获取最前端进程的PSN,并在您想要离开时切换回它。

答案 3 :(得分:0)

如果这是您的应用程序必须提供的唯一UI,您可以为其提供LSUIElement Info.plist密钥,以防止它位于Dock中或成为活动应用程序。