SwiftUI 菜单按钮最初显示为禁用
Posted
技术标签:
【中文标题】SwiftUI 菜单按钮最初显示为禁用【英文标题】:SwiftUI Menu Button Displayed as Disabled Initially 【发布时间】:2021-01-06 19:24:17 【问题描述】:在 macOS 上,。单击它们后,它们将正常激活并正确显示。这段代码复制了这个问题:
Menu
Button("First")
Button("Second")
label:
Image(systemName: "gearshape.fill")
.padding()
最初看起来像这样:
然后点击按钮后:
预览显示正确,但正在运行的应用程序的行为如上 菜单的内容似乎不影响结果 尝试使用.disabled(false)
显式处理禁用状态;没有乐趣,因为它并没有真正被禁用
我可以只设置图像的前景色,但我希望找出真正的问题。我错过了什么吗?
编辑:设置前景也不起作用。仍然明显被禁用。
【问题讨论】:
有同样的问题。也有兴趣看到答案。 在12.0上测试代码,看来问题已经解决了! 是的,我正在 macOS 12.1 上进行测试,该错误似乎已修复。感谢@Taylor 的提醒 【参考方案1】:此错误(归档为 FB8976414)在 macOS 11.3 中仍然存在。不过,我从@kontiki 那里得到了一些解决方法的帮助。如果您将Button
与Menu
一起包含,它会显示正确启用。不要问我为什么。您可以将 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 上,菜单在加载时启用外观,但是在选择选项后变为禁用外观。以上是关于SwiftUI 菜单按钮最初显示为禁用的主要内容,如果未能解决你的问题,请参考以下文章