Hi başvurum görünümü animasyon yapar, olayları dokunmak. Kullanıcı gerçekten hızlıysa ve mevcut animasyon olsa bile başka bir dokunuş yaparsa, her şey berbat olur.Senkronizasyon UIView animasyonlar
çerçevesi tarafından sağlanan bu sorunu ele almak standart bir yol var mı? Yoksa animasyonu yanlış mı yapıyorum?
Şu an için bu işlemek için bir bayrak (animationInProgress) kontrol ediyor ama bu bunun için başvurmak zorunda buysa bilmek istedi? Fark olarak
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
NSMutableArray *c = (NSMutableArray*)context;
UINavigationController *nc = [c objectAtIndex:0];
[nc.view removeFromSuperview];
animationInProgress = NO;
}
- (void)transitionViews:(BOOL)topToBottom {
if (animationInProgress) {
return;
}
animationInProgress = YES;
NSMutableArray *context = [[NSMutableArray alloc] init];
[UIView beginAnimations:@"myanim" context:context];
[UIView setAnimationDuration:0.7f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
UIViewController *from;
UIViewController *to;
if (navController3.view.superview == nil) {
from = navController2;
to = navController3;
} else {
from = navController3;
to = navController2;
}
int height;
if (topToBottom) {
height = -1 * from.view.bounds.size.height;
} else {
height = from.view.bounds.size.height;
}
CGAffineTransform transform = from.view.transform;
[UIView setAnimationsEnabled:NO];
to.view.bounds = from.view.layer.bounds;
to.view.transform = CGAffineTransformTranslate(transform, 0, height);
[window addSubview:to.view];
[UIView setAnimationsEnabled:YES];
from.view.transform = CGAffineTransformTranslate(from.view.transform, 0, -1 * height);
to.view.transform = transform;
[context addObject:from];
[UIView commitAnimations];
return;
}
sen/endIgnoringInteractionEvents başlamak kullanarak animasyon sırasında başvurunuzu girmesini herhangi dokunmatik olaylarını durdurmak için,? Onlar önbelleğe alınacak ve bir kez sunulduktan sonra appIgnoringInteractionEvents çağrılacak mı yoksa tüm dokunuşları (isminden de anlaşılacağı gibi) atar mı? – vance
@vance: Adından da anlaşılacağı gibi, atılacaklar. –