问题:使用方法:“+scheduledTimerWithTimeInterval:...”在界面上加入一个定时器,用来显示活动倒计时,但是在界面上进行滚动操作时却发现timer暂停,倒计时停止。
分析:通过研究发现,发现NSTimer与RunLoop有关,一种mode有且只有一个loop,在更换mode的时候,当前的loop会自动停止并重启另一个loop。而当我们进行滚动操作时,为了保证操作的流畅性,会自动将NSDefaultRunLoopMode(kCFRunLoopDefaultMode)切换成UITrackingRunLoopMode,这也就是出现上述问题的原因。而影响scrollView滚动的mode是NSDefaultRunLoopMode(kCFRunLoopDefaultMode),而这种mode是可以定制的。
解决:将Timer添加到NSRunLoopCommonModes(kCFRunLoopCommonModes),这样问题就解决了。
代码如下: