UIView Animate et bloc d'achèvement
Je suis en train d'animer une tableview du décalage vers le bas, puis dans la réalisation de bloc déplacer vers le haut. Mais mon code n'est pas de faire quoi que ce soit dans la réalisation de bloc:
-(void)viewDidAppear:(BOOL)animated {
if (TRUE) {
NSLog(@"animating table view");
[UIView animateWithDuration:.25
animations:^{
self.tableView.contentOffset = CGPointMake(self.tableView.contentOffset.x, self.tableView.contentOffset.y - 60);
}
completion:^(BOOL finished){
NSLog(@"completion block");
}];
}
}
"bloc" n'est jamais sorti... des idées?
EDIT:
Ok, il a quelque chose à faire avec mon UIREfreshControl:
- (void)viewDidLoad
{
[super viewDidLoad];
if (TRUE) {
UIRefreshControl *refresh = [[UIRefreshControl alloc] init];
refresh.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refresh addTarget:self action:@selector(refreshTableView:) forControlEvents:UIControlEventValueChanged];
[self setRefreshControl:refresh];
}
}
Lors de l'actualisation de contrôle est ajouté, il ne sera pas d'incendie à la fin du bloc. si je n'ai pas de' ajouter à la commande, il fonctionne comme prévu.
EDIT 2:
K, donc si j'ai faites défiler l'affichage de la table, la réalisation d'un bloc est alors tiré:
2013-02-15 13:37:06.266 [1922:14003] animating table view
2013-02-15 13:37:14.782 [1922:14003] completion block
le code comme l'écrit doit se connecter "bloc" juste après "l'animation de la vue tableau", mais il a un 8 secondes de retard cause c'est quand j'ai fait défiler la vue de la table moi-même.
comment "Tirer pour Rafraîchir" ressemble à:
source d'informationauteur Padin215
Vous devez vous connecter pour publier un commentaire.
J'ai pu reproduire ce problème et trouvé une solution de contournement.
Lors de l'utilisation d'un
UIScrollView
quiUITableView
hérite, vous ne pouvez pas modifier sescontentOffset
n'est pas un animables de la propriété. Au lieu de cela, vous devez utiliser la méthodesetContentOffset:animated:
.Donc, ce que vous devez faire est comme suit:
UITableView
délégué. Je l'ai fait surviewDidAppear
.- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView
rebondir l'animation (vous pouvez ici ajouter un délai en utilisantperformSelector:afterDelay:
.Voici le code:
J'ai utilisé ce et fonctionne bien. Sa solution de rechange.
essayez d'ajouter de retard et les options.