Je veux faire un UIView sortir de l'écran sur un toucher et revenir après un petit délai après retouche. Jusqu'à présent:UIView Animation Annuler
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[disappearingView.layer removeAllAnimations];
[UIView animateWithDuration:0.5
delay:0
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(0, 0);
}
completion:^(BOOL finished)
{
}];
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == myMainView)
{
[UIView animateWithDuration:0.5
delay:1
usingSpringWithDamping:0.7
initialSpringVelocity:0.2
options:UIViewAnimationOptionBeginFromCurrentState
animations:^
{
disappearingView.transform = CGAffineTransformMakeScale(1, 1);
}
completion:^(BOOL finished)
{
}];
}
}
Le code ci-dessus fonctionne correctement jusqu'à présent. Cependant, si l'utilisateur lève le doigt et redescend avant que le délai d'une seconde n'expire, la vue disparaît, même avec le toucher. Si vous posez et descendez au hasard, l'animation est très incohérente.
Je veux que la vue revienne seulement après 1 seconde et il n'y a aucune touche du tout.
Je suis en train de l'essayer. Quelle est la meilleure pratique sur le DELAY. Dois-je le faire en retardant l'animation? ou faites [self performSelector: @selector (touchUpAnimations) withObject: nil afterDelay: 1]; ? – Gizmodo
Je ne pense pas qu'il y ait une grande différence. Ma préférence serait de laisser l'animation faire le retard (comme vous le faites actuellement), mais le faire dans l'autre sens éviterait d'animer "ne rien faire" si un autre contact s'est produit. – pbasdf