Я столкнулся с проблемой SwiftUI, из-за которой TextField
не обновляется сразу при вводе текста. Вместо этого обновление появляется только после обновления другого TextField
. Я использую переменные @State
для управления текстом каждого TextField
.
import SwiftUI
struct ContentView: View {
@State private var amount = ""
var body: some View {
VStack{
TextField("inputNumber", text: $amount)
.foregroundColor(amount.count < 10 ? .red : .primary)
TextField("inputNumber", text: $amount)
.foregroundColor(amount.count < 10 ? .red : .primary)
}
}
}
Ваши знания неверны. это возможно
Хорошо, не обязательно UIViewRepresentable
. Вы также можете обернуть его ObservableObject
— всем, что может наблюдать SwiftUI. См. это, чтобы узнать, как это сделать с помощью дополнительного модуля.
Дело в том, что вам необходимо изменить дизайн ZenoTextField
.
спасибо, вы не отвечаете на мой вопрос
AFAIK, TextField не обновляется, когда он находится в фокусе.
Обходной путь — использовать другую переменную, как показано в примере кода.
struct ContentView: View {
@State private var amount = ""
@State private var color = Color.primary // <-- here
var body: some View {
VStack{
TextField("inputNumber", text: $amount)
.foregroundColor(color) // <-- here
.onChange(of: amount) {
color = amount.count < 10 ? .red : .primary // <-- here
}
}
}
}
не могли бы вы добавить более подробную информацию: «TextField не обновляется, когда он находится в фокусе».
Насколько я вижу из документации , KMM не может интегрироваться в SwiftUI таким образом. Вы должны создать
UIViewRepresentable
.