Переход к следующему текстовому полю при нажатии клавиши «следующий / возврат» на клавиатуре в SwiftUI - PullRequest
3 голосов
/ 15 марта 2020

Это строго для SwiftUI.

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

У меня есть следующий вид:

var body: some View {

    VStack {

        NavigationView {

            Form {

                TextField("First name", text: $model.firstname)
                    .tag(1)

                TextField("Last name", text: $model.lastname)
                    .tag(2)

            }
            .navigationBarTitle("Add a Person", displayMode: .inline)

        }

    }

}

И следующий код, который должен разрешить вкладку:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    let nextTag = textField.tag + 1

    if let nextResponder = textField.superview?.viewWithTag(nextTag) {

        nextResponder.becomeFirstResponder()

    } else {

        textField.resignFirstResponder()

    }

    return true

}

Я просто не уверен, как реализовать это в SwiftUI?

Как назначить его делегату текстового поля?!

**** ОБНОВЛЕНИЕ ****

func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    print("Current Tag: ", textField.tag) // Works correctly

    let nextTag = textField.tag + 1

    print("Next Tag: ", nextTag) // Works correctly

    let nextResponder = textField.superview?.viewWithTag(nextTag) as UIResponder? // ALWAYS RETURN NIL

    ....

Не уверен, почему присвоение nextResponder всегда возвращает nil?!

...