ios - 我希望能够按照标签指定的顺序编辑文本字段。研究了很多都无济于事。我有点菜鸟

标签 ios swift tags uitextfield

无法获取要按标签顺序编辑的字段。在这种情况下,我在屏幕上有四个字段,分为两列和两行。我希望能够向下编辑第 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/

相关文章:

ios - Alamofire 出现 kCFStreamErrorDomainSSL 错误

ios - 核心数据 : unrecognized selector sent to instance

javascript_tag 和 <script> 标签将从 erb 模板中删除

swift - 无法将 UnsafeMutableRawPointer 的值转换为 BluetoothDeviceAddress

swift - ReactiveSwift 链式 SignalProducers 不会将完成的内容发送到下游

推送然后克隆时 Git 标签消失了吗?

java - 性能 : Android views generated programmatically vs xml views

iOS:实现 drawRect 时要遵循的标准规则:带有可拖动对象

IOS:触摸Imageview时的事件

ios - 这些十六进制数字在 LLDB 输出中究竟代表什么?