Попытавшись сделать что-то похожее на поведение Message.app, у меня есть UIScrollView
и под ним текстовое поле, и пытаюсь его оживить, чтобы при появлении клавиатуры все было перемещено вверх над клавиатурой, используя ограничение, которое перемещает поле вверх (и изменение высоты UIScrollView
также из-за автоотключения), а также установка contentOffset
для прокрутки вниз в одно и то же время.
Код выполняет желаемый конечный результат, но во время анимации сразу, когда начинается анимация клавиатуры, представление прокрутки становится пустым, а затем содержимое прокручивается снизу, а не прокручивается с позиции, в которой он находился, когда началась анимация.
Анимация такова:
- (void)updateKeyboardConstraint:(CGFloat)height animationDuration:(NSTimeInterval)duration {
self.keyboardHeight.constant = -height;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view layoutIfNeeded];
self.collectionView.contentOffset =
CGPointMake(0, self.collectionView.contentSize.height - self.collectionView.bounds.size.height);
} completion:nil];
}
Видео проблемы доступно здесь.
Спасибо!