这与以下问题相同 从菜单栏打开一个窗口(SwiftUI、MacOS),但该解决方案不起作用(不再?)。
首先,当我按下图标时:
Warning: Window NSMenuWindowManagerWindow 0x7fa7fa823570 ordered front from a non-active application and may order beneath the active application's windows.
当我点击菜单项时,我收到以下警告:
CGSWindowShmemCreateWithPort failed on port 0
CGSWindowShmemCreateWithPort failed on port 0
CGSWindowShmemCreateWithPort failed on port 0
CGSWindowShmemCreateWithPort failed on port 0
CGSWindowShmemCreateWithPort failed on port 0
Warning: Window NSWindow 0x7fa7fa829d20 ordered front from a non-active application and may order beneath the active application's windows.
在
main
、async
上运行窗口逻辑后,激活应用程序后,窗口警告消失了:
NSApp.activate(ignoringOtherApps: true)
DispatchQueue.main.async {
windowController.showWindow(self)
window.orderFrontRegardless()
}
所以显然你不能
activate
在显示窗口时在同一个运行循环中“勾选”应用程序,但可以在它之后立即执行此操作。
但是我如何摆脱
NSMenuWindowManagerWindow
警告呢?这一切都是由应用程序本身通过 Main.storyboard
处理的。
activate(ignoringOtherApps:)
已弃用。如果面向 macOS 14,请尝试使用较新的 activate()
。
Apple 开发人员的这个线程提供了一些如何摆脱类似警告或决定忽略警告的线索,即考虑它“日志噪音”。