InputDismissKeyboard.swift (845B)
1 // 2 // InputDismissKeyboard.swift 3 // damus 4 // 5 // Created by William Casarin on 2022-07-02. 6 // 7 8 import Foundation 9 import SwiftUI 10 11 public extension View { 12 func dismissKeyboardOnTap() -> some View { 13 modifier(DismissKeyboardOnTap()) 14 } 15 } 16 17 public struct DismissKeyboardOnTap: ViewModifier { 18 public func body(content: Content) -> some View { 19 #if os(macOS) 20 return content 21 #else 22 return content.gesture(tapGesture) 23 #endif 24 } 25 26 private var tapGesture: some Gesture { 27 TapGesture().onEnded(end_editing) 28 } 29 30 } 31 32 public func end_editing() { 33 UIApplication.shared.connectedScenes 34 .filter {$0.activationState == .foregroundActive} 35 .map {$0 as? UIWindowScene} 36 .compactMap({$0}) 37 .first?.windows 38 .filter {$0.isKeyWindow} 39 .first?.endEditing(true) 40 }