我有一个带有发送按钮的文本字段,它是一个系统图像箭头.我希望图像的前景色根据文本字段是否为空而改变.(即,按钮为灰色,如果文本字段为空,则该按钮被禁用.如果文本字段文本的计数为>;1,则该按钮为蓝色).
我有一个不完美的解决方法:
if chatMessageIsValid {
Spacer()
HStack {
TextField($chatMessage, placeholder: Text("Reply"))
.padding(.leading, 10)
.textFieldStyle(.roundedBorder)
Button(action: sendMessage) {
Image(systemName: "arrow.up.circle")
.foregroundColor(Color.blue)
.padding(.trailing, 10)
}.disabled(!chatMessageIsValid)
}
} else {
Spacer()
HStack {
TextField($chatMessage, placeholder: Text("Reply"))
.padding(.leading, 10)
.textFieldStyle(.roundedBorder)
Button(action: sendMessage) {
Image(systemName: "arrow.up.circle")
.foregroundColor(Color.gray)
.padding(.trailing, 10)
}.disabled(!chatMessageIsValid)
}
}
这几乎是可行的,如果文本为>;长度为1.但是,由于状态的变化,在键入一个字符后,您将被踢出编辑文本字段,您需要再次 Select 文本字段以继续键入.有没有更好的方法来解决这个问题.禁用修改器?