관리 메뉴

김종권의 iOS 앱 개발 알아가기

[iOS - swift] 빈 화면 탭 시 키보드 내리는 방법 (화면 터치 시 키보드 숨김처리) 본문

iOS 응용 (swift)

[iOS - swift] 빈 화면 탭 시 키보드 내리는 방법 (화면 터치 시 키보드 숨김처리)

jake-kim 2021. 3. 22. 23:34

원리

  • ViewController에 tap gesture를 등록 한 후, 해당 gesture에 대한 이벤트는 view.endEditing(true)이벤트를 주면 해결
  • Tap의 cancelsTouchesInView = true 속성: 기존에 일어나고 있는 touch이벤트들을 취소시키는 속성
  • 이벤트가 잘 전달되게 하려면 cancelsTouchesInView = false로 지정 필요

구현

extension UIViewController {
    func hideKeyboardWhenTappedBackground() {
         let tapEvent = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
         tapEvent.cancelsTouchesInView = false
         view.addGestureRecognizer(tapEvent)
    }
    
    @objc func dismissKeyboard() {
        view.endEditing(true)
    }
}

 

* 출처: developer.apple.com/documentation/uikit/uigesturerecognizer/1624218-cancelstouchesinview

Comments