gpt4 book ai didi

swift - 菜单栏弹出窗口在 Dock 图标上打开,单击 OSX

转载 作者:行者123 更新时间:2023-11-30 12:26:50 27 4
gpt4 key购买 nike

我添加了一个可打开弹出窗口的菜单栏图标。它工作正常,但是当我通过红十字关闭应用程序并尝试通过单击停靠图标再次打开应用程序时,它会打开应用程序窗口(因为它应该),但也会打开菜单栏弹出窗口(它不应该)。当我单击停靠图标时,如何仅打开应用程序窗口而不打开弹出窗口?我的处理单击停靠图标时打开的代码如下所示:

func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
if !flag {
for window: AnyObject in sender.windows {
window.makeKeyAndOrderFront(self)
}
}
return true
}

最佳答案

我今天也遇到这个问题了。我有相同的代码,所以我尝试以某种方式检测是否 window是弹出窗口但失败了。我还发现,如果您在启动后关闭主窗口,然后单击停靠图标,如果您打印 sender.windows ,它显示 3 项(在我的例子中):<NSStatusBarWindow: 0x101300110>, <NSStatusBarWindow: 0x101108800>, <NSWindow: 0x6080001e0400>并且仅打开主窗口,没有弹出窗口,但如果弹出窗口打开一次,则单击停靠图标(当主窗口关闭时)会导致显示主窗口和弹出窗口。和print(window)for循环现在显示 4 项 - 最后一项是 <_NSPopoverWindow: 0x1011284b0> .
我还打印了 popover.isShown ,上面写着 false即使通过单击停靠图标打开弹出窗口后也是如此。我找不到检测和忽略这个特定窗口的方法。

所以我找到的唯一方法就是替换

    for window: AnyObject in sender.windows {
window.makeKeyAndOrderFront(self)
}

sender.windows[2].makeKeyAndOrderFront(self)

因为每次主窗口都出现在第三个位置
希望有更好的方法,有人教教我们。

关于swift - 菜单栏弹出窗口在 Dock 图标上打开,单击 OSX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44085519/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com