UIScrollView animation de hauteur et contentOffset "saute" du contenu depuis le bas

Essayer de faire la même chose pour les Messages.application du comportement, j'ai un UIScrollView et, en dessous, un champ de texte, et d'essayer de l'animer, de sorte que lorsque le clavier apparaît tout est déplacé vers le haut au-dessus du clavier à l'aide d'une contrainte qui se déplace dans le champ (et le UIScrollViewhauteur de changements aussi bien en raison de mise en page automatique) et aussi le réglage de la contentOffset pour faire défiler vers le bas en même temps.

Le code accomplit le voulais être le résultat final, mais au cours de l'animation à droite lorsque le clavier de l'animation commence le défilement de l'affichage devient vide, puis le contenu défile de bas en haut, plutôt que de faire défiler à partir de la position où il était lors de l'animation a commencé.

L'animation est ceci:

- (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];
}

Une vidéo du problème est disponible ici.

Merci!

source d'informationauteur abyx