NSApplication 退出最前面的应用程序状态:隐藏 v. 停用

Fra*_* R. 7 macos cocoa objective-c nsapplication

我有一个应用程序需要在计时器到期后成为最前面的应用程序,并在通过按下按钮启动计时器时退出最前面的状态,例如

  • 单击“启动计时器”-> 应用程序退出最前面的应用程序
  • 计时器到期 -> 应用程序成为最前面的应用程序

我故意稍微解释一下,因为玩活动状态的sharedApplication不做我想要的。

我通过做一个[[NSApplication sharedApplication] activateIgnoringOtherApps: YES]而成为最前沿的应用程序,并且效果很好。

做相反的事情似乎不可能!?

  • [[NSApplication sharedApplication] deactivate]不应该直接调用,但更重要的是不会将“命令选项卡顺序”中的下一个应用程序向前推进。该应用程序只是坐在那里,显示其菜单栏,但不再“处于活动状态”。

  • [[NSApplication sharedApplication] hide: self]退出活动状态并将“命令选项卡顺序”中的下一个应用程序带到前面,但它也隐藏了所有应用程序窗口。

我需要某种方式将命令选项卡顺序中的下一个应用程序放在前面而不隐藏我的所有窗口。

有什么好的方法吗?

解决方案应该是 10.5 Leopard 和 10.6 兼容。

我确实有一个 1996 年左右的解决方案,但它涉及 Carbon API,我真的更喜欢用 Cocoa 或至少是 Foundation 的方式来做。

任何帮助将不胜感激。

小智 5

您是否尝试过隐藏然后取消隐藏没有激活?