멀고도 험난한 개발 일지

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 를 추가!하면 끝

반응형