-
외부 영역 터치시 키보드 사라지게 하는방법 in TableView개발/Swift 2022. 12. 5. 14:22
키보드를 입력중에 다른 영역을 터치하면
키보드가 사라지기를 원할수 있다.
이때 가장 쉬운 방법으로 이렇게 구현한다
//VC private func setDismissKeyboardEvent() { let gesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) self.view.addGestureRecognizer(gesture) } @objc private func dismissKeyboard() { self.view.endEditing(true) }
Viewcontroller의 뷰에 제스처를 부여해서
endEditing을 호출하면 키보드가 알아서 껒여준다.
그런데 여기서 문제점이 있다.
만약 view 안에 테이블뷰가 있고
테이블 뷰에 selection 이벤트가 있다면??
저 제스쳐 때문에 무시가되버림!!
그래서 구글링 결과
뷰에 터치하면 endEditing을 하지만
다른 이벤트를 막지는 않는걸 찾음 (cancelsTouchesInView)
private func setDismissKeyboardEvent() { let gesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard)) gesture.cancelsTouchesInView = false //!!! self.view.addGestureRecognizer(gesture) } @objc private func dismissKeyboard() { self.view.endEditing(true) }
이거 넣어주면 잘 됨
'개발 > Swift' 카테고리의 다른 글
[Swift] 직접 UITableView를 구현하기 (1) 2023.01.12 [Swift] 다양한 데이터 타입 동적으로 Decoding 하기 (0) 2023.01.09 Compositional Layout + Diffable DataSource - 2 헤더 추가하기 (0) 2022.11.27 [Swift] Compositional Layout - DiffableDataSource 와 함께 사용 (0) 2022.11.23 [Swift] Compositional Layout - 헤더, 다양한 layout적용 (0) 2022.11.23