5

如何防止 NSTimer 被用户滚动表格延迟?

我找到了答案:

我有一个计时器,它以 0.4 到 0.8 秒的间隔重复大约 8 或 9 次。我不需要太多的精度,但是如果用户滚动表格,计时器将停止工作,直到表格完成滚动(这可能需要等待几秒钟!)。我以为我需要后台线程,但是后台线程上的计时器实现起来有些复杂。

我的问题的答案非常简单易行。我只需要在调用计时器后添加一行:

//////////// start the timer

self.playingTimer = [NSTimer scheduledTimerWithTimeInterval:tempo target:self selector:@selector(playSoundFromArray:) userInfo:nil repeats:YES];

//////////// the magic line:

[[NSRunLoop currentRunLoop] addTimer:self.playingTimer forMode:UITrackingRunLoopMode];

现在我可以随心所欲地滚动表格,而且我的计时器工作正常!!!

现在我需要多研究一点 NSRunLoop ......

4

1 回答 1

1

您应该为 NSDefaultRunLoopMode 模式添加计时器。UITrackingRunLoopMode 用于跟踪 UI 操作(在您的情况下为滚动)。

于 2012-08-15T07:21:50.933 回答