11
votes

Comment savoir quand une animation uableview est terminée?

Je veux faire une série de choses en réaction à la fin de certaines animations UitablesView. Par exemple, je veux que la cellule de la vue de la table soit surlignant (via SelectRowatidexpath) après avoir été défilé vers Via ScrollProwatidexpath.

Comment cela peut-il être fait?


0 commentaires

3 Réponses :


-3
votes

Eh bien, si vous souhaitez effectuer une action une fois que le ScrollProwatidexPath a été tiré.

- (void)animationDidStart:(CAAnimation *)theAnimation

- (void)animationDidStop:(CAAnimation *)theAnimation finished:(BOOL)flag


0 commentaires

31
votes

Modèle de base:

[UIView animateWithDuration:0.2 animations:^{
        [self.tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:100 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];
    } completion:^(BOOL finished){
        //Do something after scrollToRowAtIndexPath finished, e.g.:
        UITableViewCell *nextCell = [self.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:100 inSection:0]];
        [[nextCell.contentView viewWithTag:1] becomeFirstResponder];        
    }];   


3 commentaires

C'est de loin la réponse la plus propre sur "Comment exécuter x après ScrollProwatidexPath est terminée?" Merci!


Je ne sais pas comment cette solution travaillait sur iOS 4/5 mais maintenant sur iOS 6.1.4 et je remarque que juste après la modification du contenu de ContourfsCette par Scrolltorowatudexpath, les cellules de cette position ne sont pas visibles, donc pour une fraction De second, la vision de la table est complètement vide, puis les cellules sont dessinées et le clavier est affiché comme prévu. Je suppose qu'un UitailView n'est pas censé être utilisé de cette manière, ou du moins pas dans cette version d'iOS. Le même résultat se produit à l'aide de SetContentOffset à la place de Scrolltorowatudexpath.


Il devine que cela ne fonctionne plus dans IOS 6, car a changé le calendrier des animations. Vérifiez la réponse suivante pour une méthode plus fiable: Stackoverflow.com/a/12516056/908621



2
votes