新增

    1. public extension View {
    2. func dismissKeyboardOnTap() -> some View {
    3. modifier(DismissKeyboardOnTap())
    4. }
    5. }
    6. public struct DismissKeyboardOnTap: ViewModifier {
    7. public func body(content: Content) -> some View {
    8. #if os(macOS)
    9. return content
    10. #else
    11. return content.gesture(tapGesture)
    12. #endif
    13. }
    14. private var tapGesture: some Gesture {
    15. TapGesture().onEnded(endEditing)
    16. }
    17. private func endEditing() {
    18. UIApplication.shared.connectedScenes
    19. .filter {$0.activationState == .foregroundActive}
    20. .map {$0 as? UIWindowScene}
    21. .compactMap({$0})
    22. .first?.windows
    23. .filter {$0.isKeyWindow}
    24. .first?.endEditing(true)
    25. }
    26. }

    用法

    backgroundView()
        .dismissKeyboardOnTap()