¡Este método le permite ocultar el teclado en espaciadores!
Primero agregue esta función (crédito otorgado a: Casper Zandbergen, de SwiftUI no puedo tocar en el espaciador de 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
}
}
}
A continuación, agregue las siguientes 2 funciones (Crédito dado a: rraphael, de esta pregunta)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
La función a continuación se agregaría a su clase View, solo consulte la respuesta principal aquí de rraphael para obtener más detalles.
private func endEditing() {
UIApplication.shared.endEditing()
}
Finalmente, ahora puede simplemente llamar ...
Spacer().onTapGesture {
self.endEditing()
}
Esto hará que cualquier área espaciadora cierre el teclado ahora. ¡Ya no es necesario tener una gran vista de fondo blanco!
extension
Hipotéticamente, podría aplicar esta técnica a cualquier control que necesite para admitir TapGestures que no lo haga actualmente y llamar a la onTapGesture
función en combinación con self.endEditing()
para cerrar el teclado en cualquier situación que desee.