Swiftui: как всегда смотреть переменную, привязанную к текстовому полю - PullRequest
0 голосов
/ 21 февраля 2020

Я использую Swift-UI для создания своего приложения. Существует AccountView список атрибутов пользователя, и вы можете обновить его.

После того, как вы нажмете кнопку Update в строке переменных пользователя в списке, перейдите к EditVariableView, где вы можете изменить переменная с Text Field.

Конечно, текстовое поле имеет проверку введенного текста, и вы можете зафиксировать изменение с помощью кнопки Submit в правом верхнем углу EditVariableView.

Для проверки ввода я использую onCommit, обнаруживая изменение ввода, но здесь возникает проблема.

Когда вы касаетесь текстового поля, клавиатура выходит, а также Вы можете ввести текст. Но onCommit генерирует событие только при закрытии клавиатуры.

Если вы вводите текст и нажимаете кнопку Submit, не закрывая клавиатуру, то, конечно, onCommit не генерирует событие для проверки. Так что, конечно, проверка не будет выполнена.

Я хочу, чтобы вы сказали мне, как обнаружить изменение ввода при каждом изменении текста.

1 Ответ

2 голосов
/ 21 февраля 2020

Вы можете отключить кнопку «Отправить», если TextField находится в состоянии редактирования

import SwiftUI

struct ContentView: View {
    @State var txt: String = ""
    @State var editingFlag = false
    var body: some View {
        VStack {
            TextField("text", text: $txt, onEditingChanged: { (editing) in
                self.editingFlag = editing
            }) {
                print("commit")
            }.padding().border(Color.red)
            Button(action: {
                print("submit")
            }) {
                Text("SUBMIT")
            }.disabled(editingFlag)
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...