-
[ios - Swift] 키보드 사용시 뷰 올리기ios 2020. 11. 26. 10:27
이번 글에서는 키보드 사용 시 키보드에 화면이 가려지지 않도록 UIView를 애니메이션을 사용해 올려보도록 하겠습니다.
우선 기본 키보드가 올라가거나 내려가는 것을 알아야 애니메이션을 사용할 수 있으니 옵져버를 등록하겠습니다.
// 반드시 옵져버를 리무브 할것! override func viewWillAppear(_ animated: Bool) { // 옵져버를 등록 // 옵저버 대상 self // 옵져버 감지시 실행 함수 // 옵져버가 감지할 것 NotificationCenter.default.addObserver(self, selector: #selector(keyboardUp), name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardDown), name: UIResponder.keyboardWillHideNotification, object: nil) }
override func viewWillDisappear(_ animated: Bool) { NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) }
뷰가 나타나고 사라질 때 옵져버를 등록, 해제시키도록 하고
키보드의 Show, Hide의 상태를 감지 시 Selector 함수를 호출시키도록 합니다.
@objc func keyboardUp(notification:NSNotification) { if let keyboardFrame:NSValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue { let keyboardRectangle = keyboardFrame.cgRectValue UIView.animate( withDuration: 0.3 , animations: { self.view.transform = CGAffineTransform(translationX: 0, y: -keyboardRectangle.height) } ) } }
키보드가 올라올 때 뷰를 얼마나 올려야 하는지를 알기 위해서 키보드의 사이즈를 구하고
CGAffineTransform으로 뷰를 키보드 높이만큼 위로 올려줬습니다.
@objc func keyboardDown() { self.view.transform = .identity }
키보드 다운 시
CGAffineTransform을 사용하여 돌아오게 할 수도 있지만 좀 더 편한 방법으로 identity을 사용해 원 위치로 돌아오도록 합니다.
'ios' 카테고리의 다른 글
[ios - Swift] 카메라, 앨범 권한 설정 (2) 2020.12.01 [ios - Swift] Delegate를 사용해서 뷰에 데이터 전송하기 (0) 2020.11.30 [ios - Swift] UITableView 특정 위치로 이동 (0) 2020.11.26 [ios - Swift] UIView.Xib 사용하기 (0) 2020.11.24 [ios - Swift] UITableView 무한스크롤 구현하기 (0) 2020.11.22