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