У меня есть UIView, содержащий UITapGestureRecognizer, который запускает метод под названием handleLeftTap
.Почему эта анимация работает только один раз?
-(void)handleLeftTap {
self.player.direction = LEFT;
if(!self.isAnimating && self.toTile.isWalkable) {
for(UIView *currentView in self.subviews) {
CABasicAnimation *moveAnimation = [CABasicAnimation animationWithKeyPath:@"position"];
[moveAnimation setDuration:MOVE_ANIMATION_DURATION];
[moveAnimation setDelegate:self];
[moveAnimation setRemovedOnCompletion:NO];
[moveAnimation setFillMode:kCAFillModeForwards];
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(currentView.center.x+TILE_WIDTH, currentView.center.y)];
[currentView.layer addAnimation:moveAnimation forKey:nil];
}
NSLog(@"animated\n");
}
}
Когда я впервые нажимаю на экран, эта анимация работает отлично; каждый subview перемещается вправо на TILE_WIDTH
пикселей. Однако, если я снова коснусь экрана, анимация вообще не работает; нет просмотра движется. Я прошел через этот код с точками останова и подтвердил, что эта анимация добавляется к слоям. Просто анимация не применяется или что-то в этом роде. Есть ли способ исправить это?
Проходит ли это после утверждения if во второй раз? – rdelmar
@rdelmar - Да. Я поставил точку останова над оператором if, чтобы проверить это, и он действительно передает инструкцию if. – pasawaya