在SwiftUI中按下键盘上的“下一个/返回”键时,跳至下一个文本字段

时间:2020-03-15 14:04:27

标签: keyboard swiftui textfield

这仅适用于SwiftUI。

当用户点击键盘上的“ return”键时,我希望键盘移动到下一个可用的文本字段。

我有以下视图:

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?!

0 个答案:

没有答案