Этот способ позволяет скрыть клавиатуру на проставках!
Сначала добавьте эту функцию (Кредит предоставлен: Каспер Зандберген, из SwiftUI не может нажать в 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
}
}
}
Затем добавьте следующие 2 функции (Credit Given To: rraphael, из этого вопроса)
extension UIApplication {
func endEditing() {
sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
}
}
Приведенная ниже функция будет добавлена в ваш класс View, просто обратитесь к верхнему ответу здесь от rraphael для получения более подробной информации.
private func endEditing() {
UIApplication.shared.endEditing()
}
Наконец, теперь вы можете просто позвонить ...
Spacer().onTapGesture {
self.endEditing()
}
Теперь любая разделительная область закроет клавиатуру. Больше нет необходимости в большом белом фоне!
Вы можете гипотетически применить эту технику extension
к любым элементам управления, которые вам нужны для поддержки TapGestures, которые в настоящее время этого не делают, и вызывать onTapGesture
функцию в сочетании с self.endEditing()
закрытием клавиатуры в любой ситуации, в которой вы хотите.