Comment faire défiler vers le haut d'une UITableView dans iOS 7

Dans iOS 7, j'utilise le code suivant pour faire défiler vers le haut de mon UITableView. Vous avez pour tenir compte de la superposition de l'translucide barre d'état et la barre de navigation.

[tableView 
    setContentOffset:CGPointMake(
        0.0, 
        -tableViewController.topLayoutGuide.length
    ) 
    animated:YES
];

Cela fonctionne ne fonctionne que après la première fois que vous l'appelez. La première fois que vous l'appelez, ma table défile beaucoup plus loin qu'il ne le devrait, montrant beaucoup d'espace blanc. En outre, la UIRefreshControl semble figé. Vous devez pousser la table un peu pour le faire rebondir le vrai sommet. Par la suite, vous pouvez appeler ce code autant de fois que vous le souhaitez et il se comporte comme vous le souhaitez.

Comment faire défiler vers le haut d'une UITableView dans iOS 7
Comment faire défiler vers le haut d'une UITableView dans iOS 7

J'ai essayé d'autres moyens, mais ils ont tous des problèmes. L'iOS 6 se comporte de façon tout aussi bizarrement sur le premier appel. Bien qu'il ne saute pas une quantité énorme sur les appels suivants, ils ne sont pas correctes car ça défile à 64,0 points en dessous de la partie supérieure du tableau, parce que nous avons oublié de compte pour le statut et la barre de navigation.

[table setContentOffset:CGPointZero animated:YES];

J'ai aussi essayé de défilement de la première cellule, mais il n'a pas faites défiler vers le haut dans un appel. Il ne défilement d'une page de la valeur chaque fois que vous l'appelez.

[tableView 
    scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] 
    atScrollPosition:UITableViewScrollPositionTop 
    animated:YES
];
Essayez cette réponse stackoverflow.com/questions/724892/...
[tableView scrollRectToVisible:CGRectMake(0.0, 0.0, 1.0, 1.0) animated:YES] seulement fait défiler un écran vers le haut-plein à la fois. - Je l'appelle ainsi à de nombreuses reprises pour faire défiler jusqu'à la première cellule. Peut-être que c'est juste mon code ... je ne sais pas ...

OriginalL'auteur Pwner | 2013-11-26