Mit dieser Methode können Sie die Tastatur auf Abstandshaltern ausblenden !
Fügen Sie zuerst diese Funktion hinzu (Gutschrift an: Casper Zandbergen, von SwiftUI kann Spacer of HStack nicht antippen )
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
}
}
}
Fügen Sie als nächstes die folgenden 2 Funktionen hinzu (Gutschrift an: rraphael, aus dieser Frage)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
Die folgende Funktion wird Ihrer View-Klasse hinzugefügt. Weitere Informationen finden Sie in der Top-Antwort von rraphael.
private func endEditing() {
UIApplication.shared.endEditing()
}
Endlich können Sie jetzt einfach anrufen ...
Spacer().onTapGesture {
self.endEditing()
}
Dadurch wird jeder Abstandhalterbereich jetzt die Tastatur schließen. Keine große weiße Hintergrundansicht mehr erforderlich!
Sie können diese Technik hypothetisch extension
auf alle Steuerelemente anwenden , die Sie zur Unterstützung von TapGestures benötigen, die dies derzeit nicht tun, und die onTapGesture
Funktion in Kombination mit aufrufen self.endEditing()
, um die Tastatur in jeder gewünschten Situation zu schließen.