본문 바로가기

UIKIT

키보드 내리기

override func viewDidLoad() {
        super.viewDidLoad()
        ...
        let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
        tapGesture.cancelsTouchesInView = false
        view.addGestureRecognizer(tapGesture)
    }
    
        @objc private func dismissKeyboard() {
        view.endEditing(true)
    }

 

빈 곳을 눌렀을 때 키보드가 내려가게 하려면, UITapGestureRecognizer를 사용하여 탭을 감지한 후, 키보드를 숨기는 코드를 추가하면 됩니다. 이를 구현하기 위해 다음 단계를 따르면 됩니다:

 

1. View에 Tap Gesture Recognizer 추가

viewDidLoad에서 View에 Tap Gesture Recognizer를 추가합니다.

override func viewDidLoad() {
    super.viewDidLoad()
    view.backgroundColor = .systemBrown
    
    setupDelegate()
    configureConstraints()
    
    savedButton.addTarget(self, action: #selector(saveMemo), for: .touchUpInside)
    
    // Add tap gesture recognizer
    let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
    view.addGestureRecognizer(tapGesture)
}

 

2. 키보드를 숨기는 메서드 추가

dissmissKeyboard라는 메서드를 추가해 view.endEditing(true)를 호출하여 키보드를 숨깁니다.

@objc private func dismissKeyboard() {
    view.endEditing(true)
}

 

3. Gesture Recognizer가 TableView의 Interaction에 방해되지 않도록 설정

Gesture Recognizer가 TableView의 터치 이벤트를 방해하지 않도록 설정해야 합니다. 이를 위해 cancelsTouchesInView 속성을 false로 설정합니다.

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
tapGesture.cancelsTouchesInView = false
view.addGestureRecognizer(tapGesture)