在 macOS 上,SwiftUI 菜单按钮最初显示为禁用。一旦您单击它们,它们就会正常激活并正确显示。此代码复制了该问题:
Menu {
Button("First") { }
Button("Second") { }
} label: {
Image(systemName: "gearshape.fill")
}
.padding()
Run Code Online (Sandbox Code Playgroud)
最初看起来像这样:
然后点击按钮后:
.disabled(false)
尝试使用;明确地破坏禁用状态 没有快乐,因为它并没有真正被禁用我可以只设置图像的前景色,但我希望找出真正的问题。我错过了什么吗?
编辑:设置前景也不起作用。仍然明显残疾。
此错误(归档为 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)
}
Run Code Online (Sandbox Code Playgroud)
-- 更新2 --
根据 @Taylor 的说法,从 macOS 12.0 开始(经我在 macOS 12.1 中验证),该错误已修复。谢谢苹果工程师!
归档时间: |
|
查看次数: |
1249 次 |
最近记录: |