티스토리 뷰



func
 adjustKeyboardHeight(_ show:Bool_ notification:NSNotification){

        

        if let keyboardFrame = (notification.userInfo?[UIKeyboardFrameBeginUserInfoKeyasNSValue)?.cgRectValue {

            

            var userInfo = notification.userInfo!

            let animationDuration = userInfo[UIKeyboardAnimationDurationUserInfoKeyasTimeInterval

            let changeInHeight = ( keyboardFrame.height ) * (show ? 1 : -1)

            print(keyboardFrame)


            if #available(iOS 11, *){

                print("addtional")

                print(changeInHeight) 

              --> 키보드의 높이값을 가져오지 못하는 문제 

                UIKeyboardFrameBeginUserInfoKey -> UIKeyboardFrameEndUserInfoKey

         

               self.additionalSafeAreaInsets = UIEdgeInsets(top: 0, left: 0, bottom: changeInHeight , right: 0)

            }

            

            UIView.animate(withDuration: animationDuration, animations: {


                if show{

                    if #available(iOS 11, *) {

                        self.view.layoutIfNeeded()

                    }

                

                    else{

                    

                        self.scrollBottom.constant += changeInHeight

                        if self.scrollBottom.constant > changeInHeight{

                            self.scrollBottom.constant = changeInHeight

                        }

                    }

                }//if show

                else{

                    self.scrollBottom.constant = 0

                }

            })

            

        }//if let keyboardSize

        

    }





옵저버를 달았는데도 키보드의 높이값을 제대로 가져오지 못해서 헤맸는데 원인은 매우 간단한데에 있었다.

두 가지를 상황에 따라 적절히  구분지어서 사용해야겠다.

UIKeyboardFrameBeginUserInfoKey -> UIKeyboardFrameEndUserInfoKey

UIKeyboardFrameBeginUserInfoKey

The key for an NSValue object containing a CGRect that identifies the starting frame rectangle of the keyboard in screen coordinates. The frame rectangle reflects the current orientation of the device.

UIKeyboardFrameEndUserInfoKey

The key for an NSValue object containing a CGRect that identifies the ending frame rectangle of the keyboard in screen coordinates. The frame rectangle reflects the current orientation of the device.


공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함