Cette méthode vous permet de masquer le clavier sur les entretoises!
Ajoutez d'abord cette fonction (Crédit accordé à: Casper Zandbergen, de SwiftUI ne peut pas appuyer sur 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
}
}
}
Ensuite, ajoutez les 2 fonctions suivantes (Crédit accordé à: rraphael, de cette question)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
La fonction ci-dessous serait ajoutée à votre classe View, reportez-vous simplement à la première réponse de rraphael pour plus de détails.
private func endEditing() {
UIApplication.shared.endEditing()
}
Enfin, vous pouvez maintenant simplement appeler ...
Spacer().onTapGesture {
self.endEditing()
}
Cela permettra à toute zone d'espacement de fermer le clavier maintenant. Plus besoin d'une grande vue de fond blanc!
Vous pouvez hypothétiquement appliquer cette technique extension
à toutes les commandes dont vous avez besoin pour prendre en charge TapGestures qui ne le font pas actuellement et appeler la onTapGesture
fonction en combinaison avec self.endEditing()
pour fermer le clavier dans n'importe quelle situation que vous souhaitez.