Анимация клавиатуры перемещает заголовок раздела UITableView - PullRequest
0 голосов
/ 30 апреля 2018

У меня проблема, и я бродил, если кто-то уже испытывал это раньше. У меня есть следующие настройки: - Я использую UIViewController, который состоит из 3 элементов - UIView наверху
- UITableView в центре - UiView внизу

Я делаю следующее: Я анимирую нижний UIView, чтобы он поднимался после того, как клавиатура была показана. Это работает нормально, но проблема, с которой я столкнулся, заключается в том, что после исчезновения клавиатуры заголовок раздела первой ячейки в табличном представлении немного перемещается с движением анимации.

extension UserDetailsViewController: KeyboardDelegate {
func keyboardWillShow(notification: NSNotification) {
    if let info = notification.userInfo {
        let keyboardFrame = (info[UIKeyboardFrameEndUserInfoKey] as! NSValue).cgRectValue

        UIView.animate(withDuration: 0.3, animations:  {
            if UserDeviceType.IPad || UserDeviceType.IPadPro {
                self.updateConstraints(gradientHeight: 90, footerHeight: 60, footerBottom: keyboardFrame.height)
            } else if UserDeviceType.IPhone5 || UserDeviceType.IPhone4 {
                self.updateConstraints(gradientHeight: 65, footerHeight: 40, footerBottom: keyboardFrame.height)
            } else if UserDeviceType.IPhoneX {
                self.updateConstraints(gradientHeight: 90, footerHeight: 60, footerBottom: keyboardFrame.height)
            } else {
                self.updateConstraints(gradientHeight: 67, footerHeight: 40, footerBottom: keyboardFrame.height)
            }
            self.view.layoutIfNeeded()
            self.tableView.layoutIfNeeded()
        })
    }
}

func keyboardWillHide(notification: NSNotification) {
    UIView.animate(withDuration: 0.3, animations:  {
        self.setupConstraints()
        self.view.layoutIfNeeded()
        self.tableView.layoutIfNeeded()
    })
}
}

Клавиатура отображается правильно Keyboard showing up correctly

после анимации клавиатуры After the keyboard animating out

1 Ответ

0 голосов
/ 01 мая 2018

Проблема была введена функцией self.view.layoutIfNeeded () внутри анимации. Кажется, что после того, как был выполнен шаг макета, верхняя вставка просмотра прокрутки невольно увеличилась. Решением было добавить функцию начала и конца таблицы в виде обновления.

    func keyboardWillHide(notification: NSNotification) {
    if let info = notification.userInfo {
        self.tableView.beginUpdates()

        UIView.animate(withDuration: info[UIKeyboardAnimationDurationUserInfoKey] as! TimeInterval, animations:  {
            self.setupConstraints()
            self.view.layoutIfNeeded()
            self.tableView.endUpdates()
        })
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...