private func textfieldSetting() {
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tapGesture.cancelsTouchesInView = false // 텍스트필드 터치도 살아있게
view.addGestureRecognizer(tapGesture)
}
@objc func dismissKeyboard() {
view.endEditing(true)
}
위의 코드는 텍스트 필드의 키보드를 내릴 때 사용할 때 사용된다.
바깥 뷰를 클릭하여 키보드를 내릴 때 사용한다.
그런데 이 코드에서 아래 부분이 이해가 안된다.
tapGesture.cancelsTouchesInView = false
cancelsTouchesInView은 기본 값은 true
true -> 제스쳐가 인식되면 터치 이벤트가 원래 뷰로 전달되지 않는다.
false -> 제스쳐가 인식되도 터치 이벤트를 원래 뷰(텍스트필드)에 전달
화면 아무데나 터치해서 키보드를 내리거나 텍스트 필드 눌러서 입력을 하고 싶을 때 사용
바깥 뷰를 눌렀을 때 터치 이벤트를 텍스트 필드에도 전달하면
키보드가 다시 올라오지 않을까?
NO!
키보드가 올라와있을때 텍스트 필드가 터치되면 becomeFirstResponder()는 무시된다.
'swift' 카테고리의 다른 글
스택 뷰로 다이나믹하게 뷰 height 늘렸다 줄이는 법 (0) | 2025.04.29 |
---|---|
Codable 활용하여 함수 만들기 (0) | 2025.04.28 |
[Swift] Codable 이해하기 (0) | 2025.04.27 |
UIView의 draw(_:)는 그림을 그리는 함수이다. (0) | 2025.04.18 |
[Swift] Combine (0) | 2025.02.28 |