【发布时间】:2021-07-21 06:18:48
【问题描述】:
当 SwitfUI TextField 被禁用时,在 Mac OS 上,没有视觉反馈表明该字段不可输入(除了不接受焦点单击)。我搜索了高低,它看起来就像简单地设置 .background(Color.whatever) 对 IOS 有效(来自我遇到的所有“how tos”)。但是对于 Mac OS 应用程序,它只会更改文本字段的细边界的颜色。我摸索了一下,发现我可以添加不透明的叠加层来模拟效果,但这对于我一直认为的禁用字段变灰的传统标准来说似乎过于复杂。这让我觉得我在某处遗漏了一些非常明显的东西。
有没有人有一个 MacOS SwiftUI 结构的示例,它使禁用的 TextField 的背景变灰?下面是我正在做的事情的最小示例。
struct ContentView: View {
@State var nameEditDisabled = true
@State var myText = "Fred"
var body: some View {
VStack {
Button("Change Name") {
nameEditDisabled.toggle()
}
TextField("hello", text: $myText)
.background(nameEditDisabled ? Color.gray: Color.yellow)
.disabled(nameEditDisabled)
}
}
}
【问题讨论】:
-
您是否考虑过,如果 MacOS 上的 正常 行为是因为没有视觉反馈,那么您的应用程序会因为不同的行为而被认为是错误的或奇怪的?
-
我同意你的观点。查看 Mac 首选项,“约定”似乎是禁用的字段具有灰色文本和启用的字段黑色。
-
尽管如此,对于作为新手的我来说,IOS 和 MacOS 之间相同基本代码的明显功能差异是值得注意的(即使考虑到我试图做的事情会被认为是糟糕的做法; -))