我正在尝试进行实时电子邮件验证,但模拟器有奇怪的行为。当电子邮件无效时,它应该是红色的,当它有效时,文本的颜色应该是黑色,但有些字符保持红色。
struct EmailText: View {
@State var textFieldValue: String = ""
private func isValid(_ s: String) -> Bool {
// not real validation function, just for simplicity
return Int.random(in: 0 ... 1) == 1
}
var body: some View {
TextField("", text: $textFieldValue)
.foregroundColor(isValid(textFieldValue) ? .black : .red)
.padding()
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:我已将验证函数从正则表达式更新为简单条件,以排除正则表达式作为可能的问题。
解决方案:禁用自动更正。
TextField("", text: $textFieldValue)
.foregroundColor(isValid(textFieldValue) ? .black : .red)
.padding()
.autocorrectionDisabled() // <----
Run Code Online (Sandbox Code Playgroud)
最肯定的是 SwiftUI 错误,导致拼写检查警告的文本突出显示和前景色之间发生干扰。
| 归档时间: |
|
| 查看次数: |
622 次 |
| 最近记录: |