如何将另一个可可应用程序窗口带到前面

时间:2016-11-30 12:55:14

标签: swift macos cocoa appdelegate

我开发了一款Mac OS应用。在同一个捆绑包中有一个主窗口应用程序和一个菜单栏帮助应用程序。

有一个帮助应用程序的菜单项,名为"显示主应用程序"。如果在单击菜单项后未启动主应用程序,则帮助应用程序应启动主应用程序。如果主应用程序隐藏在Dock中或主窗口关闭,则帮助应用程序应将主应用程序置于前面。

我知道如何启动主应用程序。但我不知道如何实现重新激活功能。我使用了下面的代码。

let apps = NSRunningApplication.runningApplications(withBundleIdentifier: "com.xxx.yyy")
if let mainApp = apps.first {
       mainApp.activate(options: [ .activateIgnoringOtherApps ])
}

当主应用程序刚刚启动并隐藏在Dock中时,似乎activate方法无效。我注意到主应用程序实际上已激活,因为主菜单栏已更改为主应用程序的主菜单。但是" applicationShouldHandleReopen"不调用其AppDelegate类的方法。所以主窗口不能在前面订购。

我怎样才能使它有效?

1 个答案:

答案 0 :(得分:-1)

无论目标应用程序是否启动,只需调用

即可
NSWorkspace.shared().launchApplication("xxxx")

有效。