Để ẩn bàn phím trên màn hình, chúng tôi cần sử dụng một số chức năng nội bộ được xác định trước trong iOS SDK. Bàn phím xuất hiện trên màn hình khi chúng ta đang nhập vào Trường văn bản hoặc Chế độ xem văn bản. Chúng ta cần tận dụng chức năng nội bộ theo trường văn bản.
Ví dụ:nếu trường văn bản hiện tại là tfOne, chúng tôi có thể ẩn trường văn bản bằng cách sử dụng mã bên dưới:
tfOne.resignFirstResponder()
Mã này sẽ ẩn bàn phím khi được gọi, chúng tôi có thể gọi mã này trên một hành động đối với nút hoặc đối với trình nhận dạng cử chỉ.
Phương pháp này phù hợp với các Trường văn bản hạn chế, nhưng chúng ta cần cải tiến nó tốt hơn nếu chúng ta muốn đạt được điều tương tự với nhiều Trường văn bản hoặc chế độ xem văn bản.
Chúng ta có thể tạo một hàm cho cùng một hàm.
func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) }
Chúng ta có thể sử dụng chức năng này trong lớp học của mình và nó sẽ ẩn bàn phím bất cứ khi nào chúng ta chạm vào màn hình bên ngoài bất kỳ trường văn bản hoặc chế độ xem văn bản nào.
Nhưng như bạn có thể thấy rằng nó cần một chế độ xem mà cử chỉ sẽ được thêm vào, do đó chúng ta cần nhúng chức năng này vào một UIViewExtension.
extension UIViewController { func hideKeyboardWhenTappedAround() { let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard)) tap.cancelsTouchesInView = false view.addGestureRecognizer(tap) } @objc func dismissKeyboard() { view.endEditing(true) } }
Bây giờ chúng ta có thể gọi hàm này trong viewDidLoad () và sau đó bất cứ khi nào chúng ta nhấn vào bất kỳ đâu trong chế độ xem ngoại trừ Chế độ xem / Trường văn bản, bàn phím sẽ bị ẩn.