【问题标题】:SwiftUI Menu Button Displayed as Disabled InitiallySwiftUI 菜单按钮最初显示为禁用
【发布时间】:2021-01-06 19:24:17
【问题描述】:

在 macOS 上,SwiftUI 菜单按钮最初显示为禁用。单击它们后,它们将正常激活并正确显示。这段代码复制了这个问题:

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

最初看起来像这样:

然后点击按钮后:

  • 预览显示正确,但正在运行的应用程序的行为如上
  • 菜单的内容似乎不影响结果
  • 尝试使用.disabled(false) 显式处理禁用状态;没有乐趣,因为它并没有真正被禁用

我可以只设置图像的前景色,但我希望找出真正的问题。我错过了什么吗?

编辑:设置前景也不起作用。仍然明显被禁用。

【问题讨论】:

  • 有同样的问题。也有兴趣看到答案。
  • 在12.0上测试代码,看来问题已经解决了!
  • 是的,我正在 macOS 12.1 上进行测试,该错误似乎已修复。感谢@Taylor 的提醒

标签: macos swiftui


【解决方案1】:

此错误(归档为 FB8976414)在 macOS 11.3 中仍然存在。不过,我从@kontiki 那里得到了一些解决方法的帮助。如果您将ButtonMenu 一起包含,它会显示正确启用。不要问我为什么。您可以将 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 开始,该错误已修复。谢谢 Apple 工程师!

【讨论】:

  • 在我的情况下,在 10.4 上,菜单在加载时启用外观,但是在选择选项后变为禁用外观。
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 2017-07-16
  • 2021-12-20
  • 1970-01-01
  • 2020-03-09
相关资源
最近更新 更多