Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> iOS

Cách chuyển giữa các Text Field bằng nút Next/Return trên bàn phím iOS

Để cho phép người dùng nhấn nút "Next" hoặc "Return" trên bàn phím để chuyển sang Text Field tiếp theo, chúng ta cần triển khai logic xử lý delegate của UITextField.

Các bước thực hiện

  1. Tạo dự án, kéo 4 Text Field lên View Controller trong Storyboard.
  2. Chọn từng Text Field, vào Attribute Inspector đặt Tag lần lượt là 1, 2, 3, 4.
  3. Đặt Return Key thành "Next" (hoặc "Done" cho ô cuối) trong Attribute Inspector.
  4. Tạo outlet cho 4 Text Field trong ViewController:
@IBOutlet weak var tf1: UITextField!
@IBOutlet weak var tf2: UITextField!
@IBOutlet weak var tf3: UITextField!
@IBOutlet weak var tf4: UITextField!
  1. Kế thừa UITextFieldDelegate và triển khai phương thức textFieldShouldReturn:
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
    }
}
  1. Trong viewDidLoad, gán delegate cho tất cả Text Field:
override func viewDidLoad() {
    super.viewDidLoad()
    tf1.delegate = self
    tf2.delegate = self
    tf3.delegate = self
    tf4.delegate = self
}

Mã hoàn chỉnh của 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()
        tf1.delegate = self
        tf2.delegate = self
        tf3.delegate = 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
    }
}

Kết quả

Khi chạy trên Xcode và Simulator:

Cách chuyển giữa các Text Field bằng nút Next/Return trên bàn phím iOS

Cách chuyển giữa các Text Field bằng nút Next/Return trên bàn phím iOS

Mẹo nâng cao: Bạn có thể tạo extension chung cho UITextField hoặc sử dụng thư viện như IQKeyboardManager để tự động xử lý chuyển focus mà không cần gán tag thủ công.