Анимируйте ограничение при отклонении клавиатуры - PullRequest
0 голосов
/ 02 сентября 2018

У меня есть UICollectionView, а внизу у меня есть UIView, основная цель которого - действовать как контейнер для пары UIButton s и UITextView.

Теперь я установил UIKeyboardWillShow и UIKeyboardWillHide, и они работают, анимируя messageViewBottomConstraint, чтобы сдвинуть контейнер.

    private func setKeyboardNotifications() {
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillShow(_:)), name: NSNotification.Name.UIKeyboardWillShow, object: nil)
    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardWillHide(_:)), name: NSNotification.Name.UIKeyboardWillHide, object: nil)
}

@objc func keyboardWillShow(_ notification: NSNotification) {
    let keyboardFrame = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as AnyObject).cgRectValue
    guard let keyboardDuration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double else { return }
    UIView.animate(withDuration: keyboardDuration) {
        self.messageViewBottomConstraint.constant = -keyboardFrame!.height
        self.view.layoutIfNeeded()
    }
}

@objc func keyboardWillHide(_ notification: NSNotification) {
    guard let keyboardDuration = notification.userInfo?[UIKeyboardAnimationDurationUserInfoKey] as? Double else { return }
    UIView.animate(withDuration: keyboardDuration) {
        self.messageViewBottomConstraint.constant = 0
        self.view.layoutIfNeeded()
    }
}

Я бы хотел реализовать функцию скольжения вниз UICollectionView, которая позволяет отклонять ключевое слово при перемещении вниз.

override func viewDidLoad() {
    super.viewDidLoad()
    collectionView.keyboardDismissMode = .interactive
}

Проблема в том, что я не уверен, как отслеживать, где находится рамка клавиатуры, чтобы я мог анимировать messageViewBottomConstaint с ее помощью. В противном случае контейнер, содержащий UITextView, сдвигается вниз только после того, как клавиатура полностью закрыта (что не является хорошим UX)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...