damus

nostr ios client
git clone git://jb55.com/damus
Log | Files | Refs | README | LICENSE

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 }