본문 바로가기

개발/Swift

[Swift] TextField 다른 곳 터치시 키보드 내리기

다른곳을 터치하면 키보드를 내립니다.

 

다른곳 터치시 키보드 내리는 기능 만들기

touchesBegan 메소드 재정의하여(override) TextField에 편집종료를 알릴 수 있습니다.


//ViewController.swift

extension ViewController {

    // 새로운 터치가 감지되면 호출되는 메소드
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?){
        super.touchesBegan(touches, with: event)
        self.view.endEditing(true) // textField 키보드 내리기 (FirstResponder 사임)
    }

}

더 깊게 알아보기

TouchesBegan 메소드란?

- 새로운 터치가 감지되면 호출되는 메소드입니다. 텍스트필드 외 다른곳이 터치되면 알리게 됩니다.

 

endEditing 메소드란?  self.view.endEditing(true)

- endEditing 메소드는 TextField를 First Responder에서 사임시키는 메소드입니다. 쉽게 말하면 현재 작업에 응답하고 있는 컨트롤. 특히 키보드 입력을 받을 컨트롤에게 이제 편집이 끝났으니 더이상 응답하지 않아도 된다고 알려주는 것입니다.

TextField Delegate 메소드 구현시 textField.endEditing(true) 또는 textField.resignFirstResponder()로 표현하기도 합니다.

 


참고자료

반응형