29、[ iOS ] 定时器和UIScrollView的拖动事件

作者: 天听云道 | 来源:发表于2016-03-18 21:55 被阅读1296次

    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

    相关文章

      网友评论

      • b7acab929a5b:我下拉刷新后,timer的速度变得特别快,使用这句话 没有效果。请问是什么原因啊?
      • skyandlhs:大哥,你这么写,真是会误人子弟噢。。
        天听云道:@skyandlhs 我也是被人误导的:joy::joy:
      • VV木公子:不是优先级的问题,而是Runloop 中mode 改变了,默认是default模式,滚动的时候是tracking 模式,而common 模式代表了以上两种模式
        天听云道:@VV木公子 多谢指教。 :pray:

      本文标题:29、[ iOS ] 定时器和UIScrollView的拖动事件

      本文链接:https://www.haomeiwen.com/subject/qjeflttx.html