如何使用 iPhone/iOS 键盘上的“下一步”按钮浏览所有文本字段?
要逐个遍历所有文本字段(点击完成或返回按钮时),我们需要创建一个逻辑。借助一个项目来理解一下它。
创建项目并在视图控制器情节提要板上拖动四个文本字段。
逐个选择它们,并从属性检查器中将它们标记为 1、2、3、4。
还从属性检查器中将它们的返回键设置为“完成”。
在视图控制器类中为所有四个文本字段创建出口,将它们连接到各自的出口。
@IBOutlet weak var tf1: UITextField! @IBOutlet weak var tf2: UITextField! @IBOutlet weak var tf3: UITextField! @IBOutlet weak var tf4: UITextField!
将 ViewController 类扩展到 UITextFieldDelegate,并编写方法 textFieldShouldReturn
extension ViewController: UITextFieldDelegate { func textFieldShouldReturn(_ textField: UITextField) -> Bool { } }
在 ViewController 类的 viewDidLoad() 方法中,逐个为其设置委托为自己。
override func viewDidLoad() { super.viewDidLoad() self.tf1.delegate = self self.tf2.delegate = self self.tf3.delegate = self self.tf4.delegate = self }
现在,在上面编写的代码中,添加以下代码行
let nextTag = textField.tag + 1 let nextTF = textField.superview?.viewWithTag(nextTag) as UIResponder! if nextTF != nil { nextTF?.becomeFirstResponder() } else { textField.resignFirstResponder() } return false
完整的 ViewController 类现在应如下所示
import UIKit class ViewController: UIViewController { @IBOutlet weak var tf1: UITextField! @IBOutlet weak var tf2: UITextField! @IBOutlet weak var tf3: UITextField! @IBOutlet weak var tf4: UITextField! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. self.tf1.delegate = self self.tf2.delegate = self self.tf3.delegate = self self.tf4.delegate = self } } extension ViewController: UITextFieldDelegate { func textFieldShouldReturn(_ textField: UITextField) -> Bool { let nextTag = textField.tag + 1 let nextTF = textField.superview?.viewWithTag(nextTag) as UIResponder! if nextTF != nil { nextTF?.becomeFirstResponder() } else { textField.resignFirstResponder() } return false } }
该应用程序在 xcode 和模拟器中的样子分别如下
广告