如何使用 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 和模擬器中的樣子分別如下


廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP