앱에서 키보드를 호출해서 사용하는 경우, 키보드가 UI 위로 올라오면서 뷰의 일부분을 가리게 된다. 그래서 보통 keyBoard 의 height를 구해서 뷰를 keyBoard height 만큼 올려줘서 이걸 해결한다.
많은 자료들이 NotificationCenter 에 keyBoardWillShow 와 keyBoardWillHide 를 등록하고 다음과 같이 키보드 이슈를 처리한다.
bottomSuperView 를 키보드 높이만큼 올리고 싶은 상황
@objc func keyBoardWillShow(_ sender: Notification) { if let keyboardFrame: NSValue = sender.useInfo? [UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { let keybaordRectangle = keyboardFrame.cgRectValue let keyboardHeight = keybaordRectangle.height // [주의] bottomSuperView.frame.origin.y -= keyBoardHeight } }
그런데 safetryArea 를 고려해야하는 경우에는 위에 썼던 방법이 정확하게 써먹히지 않는다..
위 코드에서 [주의] 라고 표시했던 코드를 이렇게 바꾸면 제대로 키보드 높이를 찾아간다.
bottomSuperView.frame.origin.y -= (keyboardHeight - view.safeAreaInsets.bottom)