다른곳 터치시 키보드 내리는 기능 만들기
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()
로 표현하기도 합니다.
참고자료
- Apple 공식문서 (Touches Began)
https://developer.apple.com/documentation/uikit/uiresponder/1621142-touchesbegan - Hacking With Swift (What is the first responder)
https://www.hackingwithswift.com/example-code/system/what-is-the-first-responder
반응형
'개발 > Swift' 카테고리의 다른 글
@StateObject @ObservedObject @EnvironmentObject의 차이와 올바른 사용방법 (0) | 2023.05.06 |
---|---|
WebSocket에 대한 간단한 개요 (0) | 2023.04.27 |
[Swift] TableView 특정 Cell 만 Reload/업데이트 하기 (0) | 2022.08.15 |
[Swift / 디버깅] 어떤 레이아웃의 오류인지 확인하기. UILabel:0x132f261c0.firstBaseline == UILayoutGuide:0x60000357f2c0'TitleView(0x132f12de0)'.top + 28 (0) | 2022.08.15 |
[Swift] CoreData 특정 ID의 데이터만 가져오기 (전달하기) (0) | 2022.08.08 |