Questo metodo ti permette di nascondere la tastiera sui distanziatori!
Per prima cosa aggiungi questa funzione (Credito dato a: Casper Zandbergen, da SwiftUI non posso toccare 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
}
}
}
Quindi aggiungi le seguenti 2 funzioni (Credito dato a: rraphael, da questa domanda)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
La funzione di seguito verrebbe aggiunta alla tua classe View, fai riferimento alla risposta principale qui di rraphael per maggiori dettagli.
private func endEditing() {
UIApplication.shared.endEditing()
}
Infine, ora puoi semplicemente chiamare ...
Spacer().onTapGesture {
self.endEditing()
}
In questo modo, qualsiasi area di spaziatura chiuderà la tastiera. Non è più necessario un ampio sfondo bianco!
Si potrebbe ipoteticamente applicare questa tecnica extension
a tutti i controlli necessari per supportare TapGestures che attualmente non lo fanno e chiamare la onTapGesture
funzione in combinazione con self.endEditing()
per chiudere la tastiera in qualsiasi situazione si desideri.