title: keyboardFrameEndUserInfoKey not showing correct values?
body: <p>I have a text input field at the bottom of my view, which I'm trying to animate up and down to stay on top of the keyboard.</p>
  
  <pre><code>func setupKeyboardObservers() {
      NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardWillChangeFrame), name: UIResponder.keyboardWillChangeFrameNotification, object: nil)
  
      NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardDidShow), name: UIResponder.keyboardDidShowNotification, object: nil)
  
      NotificationCenter.default.addObserver(self, selector: #selector(handleKeyboardWillChangeFrame), name: UIResponder.keyboardWillHideNotification, object: nil)
  }
  
  @objc func handleKeyboardWillChangeFrame(notification: NSNotification) {
  
      let keyboardFrame = (notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue
      let keyboardDuration = (notification.userInfo?[UIResponder.keyboardAnimationDurationUserInfoKey] as? Double)
  
      print(keyboardFrame)
      orderDetailView?.textInputViewBottomAnchor?.constant = -keyboardFrame!.height
      UIView.animate(withDuration: keyboardDuration!) {
          self.view.layoutIfNeeded()
      }
  }
  </code></pre>
  
  <p>OrderDetailView is the view for the viewcontroller.</p>
  
  <p>The textinputview is the part that animates, and it works correctly when the keyboard first shows up, but does not animate back when I send a message and the keyboard resigns first responder, nor if I resignfirstresponder by clicking outside the keyboard.  </p>
  
  <p>When I print the cgrect value from keyboardFrameEndUserInfoKey, it returns the same frame value as when the keyboard is present (instead of 0).</p>
  
  <p>This only seems to work properly when I drag down the keyboard from the view.</p>
  
  <p>Thanks for your help.</p>