在SwiftUI中实现自定义TextFieldStyle时,如何检测TextField的焦点



我正在实现一个自定义的TextFieldStyle,如下所示:

struct CustomTextFieldStyle: TextFieldStyle {
func _body(configuration: TextField<Self._Label>) -> some View {
configuration
.foregroundColor(Color.black)
}
}

然而,当文本字段为"时,我想更改前景色;"聚焦";。我试过这个:

struct CustomTextFieldStyle: TextFieldStyle {
@Environment(.isFocused) private var isFocused
func _body(configuration: TextField<Self._Label>) -> some View {
configuration
.foregroundColor(isFocused ? Color.blue : Color.black)
}
}

但这似乎并不奏效,因为isFocused总是错误的。

有人知道如何检测文本字段何时聚焦吗?谢谢

在文本字段样式中,使用@FocusState布尔值,将其绑定到要包装的文本字段,然后根据其值调整格式:

struct CustomTextFieldStyle: TextFieldStyle {
@FocusState var isFocused: Bool
func _body(configuration: TextField<Self._Label>) -> some View {
configuration
.focused($isFocused)
.foregroundColor(isFocused ? .blue : .black)
}
}

最新更新