29、[ iOS ] 定时器和UIScrollView的拖动事件冲突解决 RunLoop

1、当界面同时存在有定时器和UIScrollView时,比如:一个界面顶部是一个由定时器控制的无限轮播图,下面是一个UIScrollView,这时你如果拖动下面UIScrollView,定时器就会暂停,等UIScrollView的拖动事件结束后定时器才会接着执行。
2、其实原因是事件在 RunLoop 中处理的时候是有优先级的,滚动 scollView 的事件优先级比 timer 的高,所以滚动 scrollView 的时候 timer 不会执行,所以可以使用下面的方法提高 timer 在事件处理中的优先级为最高。

//------
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
//--

更正:上面这种解释错误的,但解决代码没有问题。感谢VV木公子的提醒
原因请看:
Mitchell的文章《iOS - RunLoop 深入理解》
http://www.jianshu.com/p/edbe946c8a11

你可能感兴趣的:(29、[ iOS ] 定时器和UIScrollView的拖动事件冲突解决 RunLoop)