gpt4 book ai didi

ios - 如何通过单击键盘上的返回按钮来浏览 SwiftUI TextFields?

转载 作者:行者123 更新时间:2023-12-02 02:14:19 25 4
gpt4 key购买 nike

我正在使用 SwiftUI 的 TextField View。主要我有2个问题:

  1. 在 Swift 中,我们可以将 Storyboard中 TextField 的 Return 键(文本输入特征) 设置为 Next,如下所示,对吗?为此,在 SwiftUI 中使用哪个修饰符?

    enter image description here

  2. 我有两个文本字段,当我从键盘上单击返回/下一步按钮时如何导航到下一个文本字段?

任何人都可以使用 SwiftUI(不是 UIKit)来帮助解决这个问题吗?或者有其他替代方法来执行此功能?

最佳答案

要解决您的两个问题,您需要使用 SwiftUI 中的 UIKit。首先,您需要使用UIViewRepresentable自定义TextField。这是用于测试目的的示例代码,尽管代码不是那么优雅。我敢打赌,将会有一个更强大的解决方案。

  1. 在自定义的 TextFieldType 中,Keyboard 返回类型有已设置。
  2. 通过使用对象绑定(bind)和委托(delegate)方法textFieldShouldReturn,View可以通过更新绑定(bind)变量来聚焦键盘。

这里是示例代码:

import SwiftUI

struct KeyboardTypeView: View {
@State var firstName = ""
@State var lastName = ""
@State var focused: [Bool] = [true, false]

var body: some View {
Form {
Section(header: Text("Your Info")) {
TextFieldTyped(keyboardType: .default, returnVal: .next, tag: 0, text: self.$firstName, isfocusAble: self.$focused)
TextFieldTyped(keyboardType: .default, returnVal: .done, tag: 1, text: self.$lastName, isfocusAble: self.$focused)
Text("Full Name :" + self.firstName + " " + self.lastName)
}
}
}
}



struct TextFieldTyped: UIViewRepresentable {
let keyboardType: UIKeyboardType
let returnVal: UIReturnKeyType
let tag: Int
@Binding var text: String
@Binding var isfocusAble: [Bool]

func makeUIView(context: Context) -> UITextField {
let textField = UITextField(frame: .zero)
textField.keyboardType = self.keyboardType
textField.returnKeyType = self.returnVal
textField.tag = self.tag
textField.delegate = context.coordinator
textField.autocorrectionType = .no

return textField
}

func updateUIView(_ uiView: UITextField, context: Context) {
if isfocusAble[tag] {
uiView.becomeFirstResponder()
} else {
uiView.resignFirstResponder()
}
}

func makeCoordinator() -> Coordinator {
Coordinator(self)
}

class Coordinator: NSObject, UITextFieldDelegate {
var parent: TextFieldTyped

init(_ textField: TextFieldTyped) {
self.parent = textField
}

func updatefocus(textfield: UITextField) {
textfield.becomeFirstResponder()
}

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

if parent.tag == 0 {
parent.isfocusAble = [false, true]
parent.text = textField.text ?? ""
} else if parent.tag == 1 {
parent.isfocusAble = [false, false]
parent.text = textField.text ?? ""
}
return true
}

}
}

输出: enter image description here

关于ios - 如何通过单击键盘上的返回按钮来浏览 SwiftUI TextFields?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58121756/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com