如何使用 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 次觀看

開始你的 職業生涯

完成課程並獲得認證

開始
廣告
© . All rights reserved.