아이폰 이용자들은 텍스트필드 클릭시 키보드가 올라왔을때 내리는건 화면 터치로 내리는게 일반적입니다.

SwiftUI 에서는 전역으로 터치시 키보드가 내려갈수 있게 설정할 수 있습니다.

 

extension UIApplication: UIGestureRecognizerDelegate {
    func addTapGestureRecognizer() {
        guard let window = windows.first else { return }
        let tapGesture = UITapGestureRecognizer(target: window, action: #selector(UIView.endEditing))
        tapGesture.requiresExclusiveTouchType = false
        tapGesture.cancelsTouchesInView = false
        tapGesture.delegate = self
        window.addGestureRecognizer(tapGesture)
    }
    
    public func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return true // set to `false` if you don't want to detect tap during other gestures
    }
}

 

onAppear 호출될때 addTapGestureRecognizer 한번 호출해 주면 전체 프로젝트에서 화면 터치시 키보드가 내려갑니다.

struct SwiftUIComponemtApp: App {

    var body: some Scene {
        WindowGroup {
            ContentView()
                .onAppear(perform: {
                    UIApplication.shared.addTapGestureRecognizer()
                })
        }
    }
}

+ Recent posts