วิธีนี้ช่วยให้คุณซ่อนแป้นพิมพ์บนตัวเว้นวรรค!
ก่อนอื่นให้เพิ่มฟังก์ชั่นนี้ (เครดิตมอบให้: Casper Zandbergen จากSwiftUI ไม่สามารถแตะใน Spacer of HStack )
extension Spacer {
public func onTapGesture(count: Int = 1, perform action: @escaping () -> Void) -> some View {
ZStack {
Color.black.opacity(0.001).onTapGesture(count: count, perform: action)
self
}
}
}
จากนั้นเพิ่ม 2 ฟังก์ชั่นต่อไปนี้ (เครดิตมอบให้: rraphael จากคำถามนี้)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
ฟังก์ชันด้านล่างนี้จะถูกเพิ่มลงในคลาส View ของคุณเพียงอ้างอิงคำตอบด้านบนจาก rraphael สำหรับรายละเอียดเพิ่มเติม
private func endEditing() {
UIApplication.shared.endEditing()
}
ในที่สุดคุณก็สามารถโทร ...
Spacer().onTapGesture {
self.endEditing()
}
สิ่งนี้จะทำให้พื้นที่เว้นวรรคปิดแป้นพิมพ์ทันที ไม่จำเป็นต้องมีพื้นหลังสีขาวขนาดใหญ่อีกต่อไป!
คุณสามารถใช้เทคนิคนี้โดยสมมุติฐานในการextension
ควบคุมใด ๆ ที่คุณต้องการเพื่อรองรับ TapGestures ที่ยังไม่ทำเช่นนั้นและเรียกใช้onTapGesture
ฟังก์ชันนี้ร่วมกับself.endEditing()
เพื่อปิดแป้นพิมพ์ในทุกสถานการณ์ที่คุณต้องการ