SwiftUI 有什么方法可以让禁用的 TextField 在 Mac OS 上变灰
SwiftUI is there any way of getting a disabled TextField to be grayed out on Mac OS
禁用 SwitfUI TextField 时,在 Mac OS 上,没有视觉反馈表明该字段不可输入(除了不接受焦点单击之外)。我搜索了高点和低点,它 看起来 就像简单地设置 .background(Color.whatever) 适用于 IOS (来自我遇到的所有“操作方法” ).然而,对于 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)
}
}
}
它似乎在 swiftUI 3.0、macos 12 中“已修复”。禁用时我的灰色阴影稍微深一些。聚焦时,我有一个蓝色边框。
编辑:
struct ContentView: View {
@State var nameEditDisabled = false
@State var myText = "Fred"
var body: some View {
VStack {
Button("Change disabling") {
nameEditDisabled.toggle()
}
TextField("hello", text: $myText)
.colorMultiply(nameEditDisabled ? .gray: .yellow)
.disabled(nameEditDisabled)
}.frame(width: 444, height: 444)
}
}
禁用 SwitfUI TextField 时,在 Mac OS 上,没有视觉反馈表明该字段不可输入(除了不接受焦点单击之外)。我搜索了高点和低点,它 看起来 就像简单地设置 .background(Color.whatever) 适用于 IOS (来自我遇到的所有“操作方法” ).然而,对于 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)
}
}
}
它似乎在 swiftUI 3.0、macos 12 中“已修复”。禁用时我的灰色阴影稍微深一些。聚焦时,我有一个蓝色边框。
编辑:
struct ContentView: View {
@State var nameEditDisabled = false
@State var myText = "Fred"
var body: some View {
VStack {
Button("Change disabling") {
nameEditDisabled.toggle()
}
TextField("hello", text: $myText)
.colorMultiply(nameEditDisabled ? .gray: .yellow)
.disabled(nameEditDisabled)
}.frame(width: 444, height: 444)
}
}