При моделировании после загрузки UIView, который содержит 52 UIImageView; для начала анимации требуется не менее 3 кликов. При первых двух кликах вызывается touchsBegan. Я знаю это потому, что NSSC (@ «Just before for loop») был отображен на консоли. Однако консоль заявляет, что cardAnimationArray пуст в первые 2 клика.UIImageView реагирует на частичный штрихBegan-код до третьего щелчка. ЗАЧЕМ?
Только после третьего щелчка начинается анимация. Странно, что нажав другие карты (UIImageView) после третьего щелчка, анимация начинается с 1-го щелчка (ведет себя как обычно).
Как-то он просто не входит в цикл for в первые 2 клика! это так ???
мой код, как показано ниже:
- (void) touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *myPathDocs = [documentsDirectory stringByAppendingPathComponent:@"Cards.plist"];
NSMutableArray *array = [[NSArray alloc] initWithContentsOfFile:myPathDocs];
NSMutableDictionary *dict = [array objectAtIndex:self.tag];
NSString *cardMoved = [dict objectForKey:@"Card"];
NSMutableArray *cardAnimationPreloadingArray = [[NSMutableArray alloc] initWithCapacity:20];
self.cardAnimationArray = [[NSMutableArray alloc] initWithCapacity:20];
[cardAnimationPreloadingArray release];
NSLog(@"Just before for loop");
for (int k; k < 20; k++) {
NSLog(@"counting i: %d",k);
int j = k+1;
cardMovedImageName = [NSString stringWithFormat:@"Animated %@%d.png",cardMoved,j];
NSLog(@"cardMovedImageName %@ at %d",cardMovedImageName, k);
UIImage *cardMovedImage = [UIImage imageNamed:cardMovedImageName];
[cardAnimationArray insertObject:cardMovedImage atIndex:k];
}
CGRect selfFrame = self.frame;
selfFrame.size.width = 110;
selfFrame.size.height = 164;
[self setFrame:selfFrame];
[self.superview bringSubviewToFront:self];
CGPoint pt = [[touches anyObject] locationInView:self.superview];
self.center = pt;
NSLog(@"cardAnimationArray %@", cardAnimationArray);
self.clipsToBounds = NO;
self.animationImages = [NSArray arrayWithArray:cardAnimationArray];
[self setAnimationRepeatCount:1];
self.animationDuration= 0.3;
[self startAnimating];
self.image = [UIImage imageNamed:cardMovedImageName];
}
Большое вам спасибо за быстрый ответ, NSD! я полностью пропустил это! – zerlphr