如何使用 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 和模拟器中的样子分别如下

更新于: 2020 年 6 月 27 日

945 次观看

开始你的 职业生涯

完成课程并获得认证

开始
广告