UIImageView реагирует на частичный код touchSegan перед третьим щелчком. ЗАЧЕМ? - PullRequest
0 голосов
/ 20 декабря 2009

На симуляции после загрузки UIView, который содержит 52 UIImageView; требуется всего 3 клика, чтобы начать анимацию. При первых двух щелчках вызывается touchesBegan. я знаю это, потому что NSLog (@ "Just before for loop); отображался на консоли. Однако консоль заявляет, что cardAnimationArray пуст в первые 2 щелчка.

Только после 3-го щелчка анимация начинается. Странно то, что при нажатии на другие карты (UIImageView) после 3-го щелчка анимация начинается с 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];



}

1 Ответ

1 голос
/ 20 декабря 2009

Вы, кажется, никогда не назначаете значение 'k', поэтому оно никогда не может быть меньше 20.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...