func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillShow(notification:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.addObserver(self, selector: #selector(keyboardWillHide(notification:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil) }
func keyboardWillShow(notification: Notification) { let info = notification.userInfo! let keyboardSize = (info[UIKeyboardFrameBeginUserInfoKey] as! NSValue).cgRectValue let keyboardHeight: CGFloat = keyboardSize.height let duration = info[UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval UIView.animate(withDuration: duration, delay: 0, options: UIViewAnimationOptions.curveEaseInOut, animations: { self.tableView?.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: keyboardHeight, right: 0) }, completion: nil) }
func keyboardWillHide(notification: Notification) { let info = notification.userInfo! let duration = info[UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval UIView.animate(withDuration: duration, delay: 0, options: UIViewAnimationOptions.curveEaseInOut, animations: { self.tableView?.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) }, completion: nil) }
func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillShow, object: nil) NotificationCenter.default.removeObserver(self, name: NSNotification.Name.UIKeyboardWillHide, object: nil) }