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