无法获取要按标签顺序编辑的字段。在这种情况下,我在屏幕上有四个字段,分为两列和两行。我希望能够向下编辑第 1 列和第 2 列。默认情况下,它穿过第 1 行然后到达第 2 行。
这是我正在进行的更大项目的一部分。这是一个关键特性,因为还有很多字段(超过 20 个)。我也尝试过使用 TextDidEndEditing。那没有帮助。
import UIKit
import os.log
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var Par1: UITextField!
@IBOutlet var Par2: UITextField!
@IBOutlet var Par3: UITextField!
@IBOutlet var Par4: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Par1.delegate = self
Par1.tag = 0
Par2.delegate = self
Par2.tag = 1
Par3.delegate = self
Par3.tag = 2
Par4.delegate = self
Par4.tag = 3
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func textFieldShouldEndEditing(_ textField: UITextField) -> Bool {
var nextTag:Int
textField.resignFirstResponder()
if (textField.tag == 3) {
nextTag = 0
} else {
nextTag = textField.tag + 1
}
if let nextResponder = textField.superview?.viewWithTag(nextTag) as? UITextField {
nextResponder.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return true
}
@IBAction func Par1Entered(_ sender: UITextField) {
Par1.text = sender.text
}
@IBAction func Par2Entered(_ sender: UITextField) {
Par2.text = sender.text
}
@IBAction func Par3Entered(_ sender: UITextField) {
Par3.text = sender.text
}
@IBAction func Par4Entered(_ sender: UITextField) {
Par4.text = sender.text
}
}
最佳答案
使字段标签按顺序排列,并在 textFieldShouldReturn 中执行以下操作:
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
let nextTag = textField.tag + 1
if let nextResponder = textField.superview?.viewWithTag(nextTag) {
nextResponder.becomeFirstResponder()
} else {
textField.resignFirstResponder()
}
return false
}
如果您想在不点击 Next 键盘按钮的情况下转到下一个字段,还有一些其他方法可以实现此目的。
关于ios - 我希望能够按照标签指定的顺序编辑文本字段。研究了很多都无济于事。我有点菜鸟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53953573/