У меня есть UIImageView, размещенный в UIScrollView. В основном UIImageView имеет очень большую карту и создает анимацию по предопределенному пути с направленным направлением навигации «стрелки».NSTimer не срабатывает при возникновении события uiscrollview
Но, когда происходит появление uiscrollevents, я думаю, что MainLoop зависает, а NSTimer не запускается, а анимация останавливается.
Есть ли существующее свойство, которое решает эту проблему, в UIScrollView, CAKeyFrameAnimation или NSTimer?
//viewDidLoad
self.myTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(drawLines:) userInfo:nil repeats:YES];
- (void)drawLines:(NSTimer *)timer {
CALayer *arrow = [CALayer layer];
arrow.bounds = CGRectMake(0, 0, 5, 5);
arrow.position = CGPointMake(line.x1, line.y1);
arrow.contents = (id)([UIImage imageNamed:@"arrow.png"].CGImage);
[self.contentView.layer addSublayer:arrow];
CAKeyframeAnimation* animation = [CAKeyframeAnimation animation];
animation.path = path;
animation.duration = 1.0;
animation.rotationMode = kCAAnimationRotateAuto; // object auto rotates to follow the path
animation.repeatCount = 1;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
animation.fillMode = kCAFillModeForwards;
[arrow addAnimation:animation forKey:@"position"];
}
Возможный дубликат [UIScrollView приостанавливает NSTimer при прокрутке] (http://stackoverflow.com/questions/7059366/uiscrollview-pauses-nstimer-while-scrolling) –