SwiftUI 菜单按钮最初显示为禁用

7
在 macOS 上,SwiftUI 菜单按钮一开始会显示为禁用状态。一旦您点击它们,它们就会像正常情况下一样激活并正确显示。以下代码重现了该问题:
Menu {
    Button("First") { }
    Button("Second") { }
} label: {
    Image(systemName: "gearshape.fill")
}
.padding()

最初看起来是这样的:

输入图像描述

然后点击按钮后:

输入图像描述

  • 预览显示正确,但运行应用程序表现如上所述
  • 菜单内容似乎不影响结果
  • 尝试使用.disabled(false)显式地更改禁用状态; 由于它实际上没有被禁用,因此没有成功

我可以只设置图片的前景色,但我希望找出真正的问题。我是否遗漏了什么?

编辑:设置前景色也无效。仍然可见禁用状态。


有同样的问题。我也很想看到答案。 - Maschina
在12.0上测试代码,看起来问题已经解决了! - Taylor
是的,我正在macOS 12.1上进行测试,该错误似乎已经修复。感谢@Taylor提醒。 - smr
1
我在 macOS Monterey 12.6.1 (21G217) 上仍然看到这个问题。 - Lukáš Kubánek
1个回答

2
这个错误(FB8976414)在macOS 11.3仍然存在。不过,我得到了@kontiki的帮助,找到了一个解决方法。如果你在Menu中包含一个Button,它就会正确地显示为启用状态。不要问我为什么。你可以将Button设置为零大小,这样它就不会影响你的布局,并在(如果)该错误被修复后将其删除。

-- 更新 --

截至macOS 11.4,这种技术不再起作用。直到单击菜单前,Menu始终显示为禁用状态。我想如果你看到积极的一面,至少它更加一致了!

-- --

HStack(spacing: 0) {
    Menu {
        Button("First") { }
        Button("Second") { }
    } label: {
        Image(systemName: "gearshape.fill")
    }

    Button("", action: {}).scaleEffect(x: 0, y: 0)
}

-- 更新2 --

根据@Taylor的说法(我在macOS 12.1中验证),从macOS 12.0开始,该漏洞已经修复。感谢苹果工程师!


在我的情况下,在10.4上加载菜单时,它会启用外观,但是在选择选项后,它会变成禁用外观。 - Chris
1
不幸的是,在 macOS 12.3.1 上似乎仍未修复此问题。 - iMaddin
我应该澄清一下,我看到的问题仍然存在于窗口工具栏中。我在Twitter上发现了同样的问题。 - iMaddin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接