对不起,这是一个重复的问题,但我尝试了所有我找不到的解决方案。NSTimer未能停止?
无论如何,这是我的问题,具体而言。我有以下代码,在长按手势时启动计时器,然后在取消手势或动作完成时停止计时。
-(void)photoLongPress:(UILongPressGestureRecognizer *)press
{
NSTimer *timer = nil;
if (press.state == UIGestureRecognizerStateBegan)
{
//Start timer
timer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(photoLongPressTimer:) userInfo:nil repeats:YES];
}
if (press.state == UIGestureRecognizerStateEnded)
{
[timer invalidate];
timer = nil;
}
}
-(void)photoLongPressTimer:(NSTimer *)timer
{
DAProgressOverlayView *progress = (DAProgressOverlayView *)[self.view viewWithTag:kTagPhotoDeleteProgressIndicator];
progress.progress += 0.08;
if (progress.progress == 1)
{
[self deletePhotoSelection];
[timer invalidate];
timer = nil;
}
}
定时器在photoLongPressTimer
方法无效时,但如果所述手势在photoLongPress
方法停止停止。为什么会这样呢?我很难过。
谢谢。
使用代码这个伟大的工程。我很好奇,为什么当一个局部变量(第一次出现的叶子)似乎是对原始对象的引用时不工作? –
您在最初创建计时器时有参考,但每次手势改变时,再次调用该方法时会创建一个新的本地参考(并设置为零)。 – Wain