Это строго для 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
?!