เพื่อซ่อนคีย์บอร์ดบนหน้าจอ ใช้ฟังก์ชันภายใน iOS SDK คีย์บอร์ดจะแสดงเมื่อพิมพ์ใน Text Field หรือ Text View ต้องใช้ฟังก์ชันตามประเภทของ Text Field
วิธีพื้นฐาน: ซ่อนคีย์บอร์ดของ Text Field เฉพาะตัว
ถ้า Text Field ปัจจุบันคือ tfOne สามารถซ่อนได้ด้วย:
tfOne.resignFirstResponder()
เรียกใช้ใน Action ของปุ่มหรือ Gesture Recognizer ก็ได้
วิธีขยาย: ซ่อนคีย์บอร์ดเมื่อแตะนอกพื้นที่ Text Field (หลาย Text Fields)
สร้างฟังก์ชันสำหรับจัดการหลาย Text Fields:
func hideKeyboardWhenTappedAround() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(UIViewController.dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}ฟังก์ชันนี้จะซ่อนคีย์บอร์ดเมื่อแตะที่พื้นที่ว่างของ View
วิธีที่ดีที่สุด: ใช้ UIViewController Extension
เพื่อให้ใช้งานได้ทุก View Controller ให้วางไว้ใน Extension:
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)
}
}เพียงเรียก hideKeyboardWhenTappedAround() ใน viewDidLoad() คีย์บอร์ดจะซ่อนอัตโนมัติเมื่อแตะนอก Text Field/View