[ios] 키보드가 화면을 가리는 문제

Cobugi·2022년 3월 12일
0
post-thumbnail

문제

  • UITextField, UITextView 등 텍스트를 작성하기 위해 키보드를 올려야하는 상황에서
  • 키보드가 화면을 가리는 문제가 생긴다
  • 스크롤 뷰로 구성되어있다고 해도 키보드가 올라온 상황에서 스크롤이 되지 않는다

해결

  • 뷰의 높이를 조정해야한다
  • 키보드가 올라오면 뷰의 높이를 키보드의 높이 만큼 줄이고
  • 키보드가 사라지면 뷰의 높이를 다시 돌려놔야한다
  • 또한, 텍스트필드가 여러개 있을 경우 키보드가 올라올 때 초기화 해줘야한다

코드

        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardWillShow),
            name: UIResponder.keyboardWillShowNotification,
            object: nil)
        NotificationCenter.default.addObserver(
            self,
            selector: #selector(keyboardWillHide),
            name: UIResponder.keyboardWillHideNotification,
            object: nil)

    @objc func keyboardWillShow(_ sender: Notification) {
        self.keyboardWillHide(sender)
        let userInfo: NSDictionary = sender.userInfo! as NSDictionary
        let keyboardFrame: NSValue = userInfo.value(forKey: UIResponder.keyboardFrameEndUserInfoKey) as! NSValue
        let keyboardRectangle = keyboardFrame.cgRectValue
        let keyboardHeight = keyboardRectangle.height
        keyHeight = keyboardHeight
        
        self.view.frame.size.height -= keyboardHeight
    }
    @objc func keyboardWillHide(_ sender: Notification) {
        self.view.frame.size.height += keyHeight ?? 0
    }
profile
iOS Developer 🐢

0개의 댓글