키보드 외 다른 곳을 터치했을 때 키보드가 내려가도록 하는 UIViewController Extension

Posted on 2021-11-15 by GKSRUDTN99
Swift&Xcode Xcode Swift

키보드 외 다른 곳을 터치했을 때 키보드가 내려가도록 하는 UIViewController Extension

func hideKeyboardWhenTappedAround(target: UIView? = nil, action: Selector? = #selector(dismissKeyboard)) {
    // Tap Gesture를 인식할 수 있는 Recognizer 객체를 생성한다.
    let recognizer = UITapGestureRecognizer(target: self, action: action)
    // Tap Gesture가 인식되었을 때, 터치를 뒤에 있는 뷰에도 전달할 것인지 정한다.
    recognizer.cancelsTouchesInView = false

    // targetView가 설정되었다면 특정 View를 터치했을 때 키보드가 내려가도록 지정할 수 있다.
    // 지정하지 않았다면, Background View를 targetView로 지정한다.
    var targetView = target
    if targetView == nil{
      targetView = self.view
    }
    targetView?.addGestureRecognizer(recognizer)
}

@objc func dismissKeyboard(force: Bool = false) {
    self.view.endEditing(force)
}