textFieldDidBeginEditing и textFieldDidEndEditing в SwiftUI - PullRequest
0 голосов
/ 11 июня 2019

как я могу использовать методы textFieldDidBeginEditing и textFieldDidEndEditing со структурой TextField по умолчанию от apple.

1 Ответ

3 голосов
/ 12 июня 2019

TextField имеет onEditingChanged и onCommit обратных вызовов.

Например:

@State var text = ""
@State var text2 = "default"
var body: some View {
    VStack {
        TextField($text, placeholder: nil, onEditingChanged: { (changed) in
            self.text2 = "Editing Changed"
        }) {
            self.text2 = "Editing Commited"
        }
        Text(text2)
    }
}

Код в onEditingChanged вызывается только тогда, когда пользователь выбирает textField, а onCommit вызывается только тогда, когда нажаты return, done и т. Д.

Редактировать: Когда пользователь переключается с одного TextField на другой, ранее выбранный TextField onEditingChanged вызывается один раз, при этом changed (параметр) равен false и также вызывается только что выбранный TextField onEditingChanged, но с параметром, равным true. Обратный вызов onCommit - , а не , вызываемый для ранее выбранного TextField.

Редактировать 2: Добавление примера, если вы хотите вызвать функцию committed(), когда пользователь нажимает, вернуть или изменить TextField и changed(), когда пользователь нажимает TextField:

@State var text = ""
var body: some View {
    VStack {
        TextField($text, placeholder: nil, onEditingChanged: { (changed) in
           if changed {
               self.changed()
           } else {
               self.committed()
           }
        }) {
            self.committed()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...