Ta metoda pozwala ukryć klawiaturę na podkładkach!
Najpierw dodaj tę funkcję (Kredyt przyznany : Casper Zandbergen, z SwiftUI nie można stuknąć w 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
}
}
}
Następnie dodaj następujące 2 funkcje (kredyt przyznany: rraphael, z tego pytania)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
Poniższa funkcja zostanie dodana do Twojej klasy View, po prostu zapoznaj się z najlepszą odpowiedzią od rraphaela, aby uzyskać więcej informacji.
private func endEditing() {
UIApplication.shared.endEditing()
}
Wreszcie możesz teraz po prostu zadzwonić ...
Spacer().onTapGesture {
self.endEditing()
}
Spowoduje to, że dowolny obszar odstępnika zamknie teraz klawiaturę. Nie ma już potrzeby dużego, białego widoku tła!
Możesz hipotetycznie zastosować tę technikę extension
do dowolnych kontrolek potrzebnych do obsługi TapGestures, które obecnie tego nie obsługują, i wywołać onTapGesture
funkcję w połączeniu z, self.endEditing()
aby zamknąć klawiaturę w dowolnej sytuacji.