키보드가 화면을 가릴때 해결
이번에도 노티피케이션과 노티피케이션을 이용한다❗️❗️
viewDidLoad에서 노티피케이션 옵저버를 등록해줬다
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(_:)), name: UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(_:)), name: UIResponder.keyboardWillHideNotification, object: nil)
selector에는 작동할 함수가 들어간다😊
keyboardWillShowNotification는 키보드 표시 직전에 post되고, keyboardWillHideNotification 키보드가 내려가기 직전에 post된다
키보드 표시 직전에 keyboardWillShow함수를 호출하여 현재 뷰의 y값을 -200하여 뷰를 위로 올려주었다
키보드가 내려가기 직전에는 keyboardWillHide함수를 호출하여 뷰의 위치를 제자리로 돌려주었다
//뷰를 올려주는 작업
@objc func keyboardWillShow(_ sender: Notification) {
self.view.frame.origin.y = -200 // Move view 200 points upward
}
//원래 제자리로 돌려주는 작업
@objc func keyboardWillHide(_ sender: Notification) {
self.view.frame.origin.y = 0 // Move view to original position
}
addObserver로 등록을 해줬으면 해제도 해주어야 한다🧐
viewWillDisappear에서 unregisterForKeyboardNotifications함수를 호출해서
뷰가 사라지기 직전에 키보드 노티피케이션을 해제시켜주었다❗️
func unregisterForKeyboardNotifications() {
NotificationCenter.default.removeObserver(self, name:UIResponder.keyboardWillShowNotification, object: nil)
NotificationCenter.default.removeObserver(self, name:UIResponder.keyboardWillHideNotification, object: nil)
}
이렇게 하니까 생긴 문제,,,,,,,,
버킷리스트를 작성할 때에도 키보드가 올려오기 때문에 노티피케이션에 신호를 준다😭😭😭
그래서 이때에도 화면이 올라가고 오류생김🤬🤬🤬😡😡🤬🤬
그렇다면,,,노티피케이션을 키보드가 올라갈때가 아니라 텍스트뷰를 편집할때 옵저버를 등록해준다면 되지 않을까?!?!
라는 생각을 시작으로❗️ textView가 편집되기 시작하거나 끝나는 시점에 뷰의 위치를 변경시켜 주었다
하지만,,,,뭔가 이후로 문제가 많이 생겼다,,,,,,사진에 접근하거나 완료버튼을 누르거나
어떤 버튼을 누를때 갑자기 멈춰버린다,,,,,,,,,,🤬🤬🤬🤬🤬
func textViewDidBeginEditing(_ textView: UITextView) {
if view.frame.origin.y == 0 {
self.view.frame.origin.y -= 200
}
}
func textViewDidEndEditing(_ textView: UITextView) {
if view.frame.origin.y != 0 {
self.view.frame.origin.y = 0
}
}
마지막 해결책은 키보드를 done버튼을 눌렀을 때에만 내려주는거??!?!
내일 다시,,,,,,시도
노티피케이션센터와 노티피케이션에 대해서도 복습+발표준비,,,
'기록 > 공부기록👩🏻💻' 카테고리의 다른 글
[공부기록]100일_23일차 (0) | 2020.09.29 |
---|---|
[공부기록]100일_22일차 (0) | 2020.09.28 |
[공부기록]100일_20일차 (0) | 2020.09.26 |
[공부기록]100일_19일차 (0) | 2020.09.25 |
[공부기록]100일_18일차 (0) | 2020.09.24 |