Задать вопрос

Как прокрутить UITableView при изменении высоты?

func keyboardWillShow(sender: NSNotification) {
        let duration = sender.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double
        let curve = sender.userInfo![UIKeyboardAnimationCurveUserInfoKey] as! UInt

        let info: NSDictionary = sender.userInfo!
        let value: NSValue = info.valueForKey("UIKeyboardFrameEndUserInfoKey") as! NSValue
        let keyboardSize: CGSize = value.CGRectValue().size
        
        UIView.animateWithDuration(duration, delay: 0, options: UIViewAnimationOptions(rawValue: curve), animations: {
            
            self.contentBottomConstrains.constant = keyboardSize.height
            self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: self.messages.count-1, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: true)
            self.view.layoutIfNeeded()

            }, completion: nil)
        
    }

Данный код изменяет отступ снизу от супервьюхи, поднимая поле ввода на высоту клавиатуры, но не хочет прокручивать таблицу вниз. Помогите, пожалуйста, найти и исправить ошибку.
  • Вопрос задан
  • 337 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    iOS-разработчик
    10 месяцев
    Далее
  • LearnQA
    Автоматизатор мобильных приложений
    9 недель
    Далее
  • Skillbox
    Middle-разработчик игр на Unity
    3 месяца
    Далее
Пригласить эксперта
Ответы на вопрос 1
maestrro712
@maestrro712
 iOS Developer
Перенесите код
self.tableView.scrollToRowAtIndexPath(NSIndexPath(forRow: self.messages.count-1, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: true)

в completionBlock.
Сейчас у вас на момент вызова таблица имеет еще старые размеры. В то же время scrollToRow.... самостоятельно создаст анимацию.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы