[iOS] touchesBegan, UITapGestureRecognizer 이용하여 키보드 내리기

지지·2022년 7월 31일
0

iOS

목록 보기
3/3

여러 앱상에서 TextField 등을 클릭하여 키보드가 올라온 상태에서 화면 임의의 영역을 터치하면 키보드가 사라지는 동작을 많이 봐왔습니다.

아래 화면에서 키보드 영역(빨간 박스)을 제외한 화면을 터치하면 키보드가 내려가는 방법을 구현해보는 방법을 알아봅시다.

일단 키보드 리턴키나 완료버튼으로 내리는것은 무시하겠습니다.

touchesBegan 함수 추가

ViewController에 아래 코드를 추가해주면 됩니다.

매우 간단간단합니다.

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
	self.view.endEditing(true)
}

그런데 테이블뷰의 경우 이 간단한 코드가 동작하지 않더라고요..?!

왜인지는 모르겠다만 스크롤뷰에서도 touchesBegan이 호출되지 않는다는군요..

해당 함수 대신 아래 방법으로 해결할 수 있었습니다.

UITapGestureRecognizer 추가

아래 코드를 위 코드 대신 추가해주면 됩니다.

view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(hideKeyboard)))

@objc func hideKeyboard() {
	self.view.endEditing(true)
}

그러면 터치이벤트가 정상적으로 동작하여 키보드를 내릴 수 있습니다.

원인에 대해서는 공부하면서 추가하겠습니다.😂

profile
우리 벨로그 영업합니다ㅏㅏ

0개의 댓글