我正在实现一个自定义的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)
}
}