如何将另一个可可应用程序窗口置于前面

mor*_*wan 5 macos cocoa appdelegate swift

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

帮助应用程序有一个名为“显示主应用程序”的菜单项。如果我单击菜单项后未启动辅助应用程序,则辅助应用程序应启动主应用程序。如果辅助应用程序隐藏在扩展坞中或其主窗口已关闭,则辅助应用程序应将主应用程序置于最前面。

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

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

当主应用程序刚刚启动并隐藏在扩展坞中时,激活方法似乎不执行任何操作。我注意到主应用程序实际上已激活,因为主菜单栏已更改为主应用程序的主菜单。但其AppDelegate类的“applicationShouldHandleReopen”方法没有被调用。所以主窗口不能放在前面。

我怎样才能让它发挥作用?

mor*_*wan 0

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

NSWorkspace.shared().launchApplication("xxxx")
Run Code Online (Sandbox Code Playgroud)

有用。