Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> IOS

คุณจะซ่อนคีย์บอร์ดบนหน้าจอใน iOS App ได้อย่างไร?


ในการซ่อนแป้นพิมพ์บนหน้าจอ เราจำเป็นต้องใช้ฟังก์ชันภายในบางอย่างที่กำหนดไว้ล่วงหน้าใน 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() ของเราได้ และเมื่อใดก็ตามที่เราแตะที่ใดก็ได้ในมุมมองยกเว้นมุมมองข้อความ/ ฟิลด์ แป้นพิมพ์จะถูกซ่อนไว้