멀고도 험난한 개발 일지
UIKit_유투브_신동규 - #3 아무곳이나 클릭했을때 키보드 숨기는 법
이드entity
2022. 7. 18. 15:22
반응형
올라와있는 키보드를 아무데나 다른 곳을 클릭했을 때 내리기!
TextField 외의 공간을 터치했을 때 키보드가 숨겨지도록 하기
func dismissKeyboard() {
view.endEditing(true)
}
Editing이 끝났을 때 dismissKeyboard 함수가 실행되도록 하고,
Textfield 외의 공간을 터치했을 때 실행돼야 함
·
·
·
viewDidLoad 함수에서 처리하기
override func viewDidLoad() {
...
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
}
UITapGestureRecognizer를 사용하여 tap 했다는 정보를 전달한 뒤
실행시킬 함수를 #selector() 안에 지정!
하지만! 아래와 같은 오류가 뜸
이건 #selector가 Objective-C 언어에서 사용되던 것이기 때문이다
그래서 dismissKeyboard 함수가 Objective-C 에서도 사용될 수 있도록 바꾸어야 함!
·
·
·
dismissKeyboard를 Objective-C 함수로 바꾸기
@objc func dismissKeyboard() {
view.endEditing(true)
}
func 앞에 @objc만 붙여주면 됨 ><
·
·
·
버튼도 클릭했을 때 키보드가 사라져야 함
override func viewDidLoad() {
...
let tap = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tap.cancelsTouchesInView = false
view.addGestureRecognizer(tap)
}
그래서 cancelsTouchesInView = false 를 추가!하면 끝
반응형