美文网首页
以+ scheduledTimerWithTimeInterva

以+ scheduledTimerWithTimeInterva

作者: 华语新空 | 来源:发表于2019-03-25 12:48 被阅读0次

以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表时,timer会暂定回调,为什么?如何解决?

RunLoop只能运行在一种mode下,如果要换mode,当前的loop也需要停下重启成新的。利用这个机制,ScrollView滚动过程中NSDefaultRunLoopMode(kCFRunLoopDefaultMode)的mode会切换到UITrackingRunLoopMode来保证ScrollView的流畅滑动:只能在NSDefaultRunLoopMode模式下处理的事件会影响ScrollView的滑动。

如果我们把一个NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环中的时候, ScrollView滚动过程中会因为mode的切换,而导致NSTimer将不再被调度。

同时因为mode还是可定制的,所以:

Timer计时会被scrollView的滑动影响的问题可以通过将timer添加到NSRunLoopCommonModes(kCFRunLoopCommonModes)来解决。代码如下:

    //将timer添加到NSDefaultRunLoopMode中
[NSTimer scheduledTimerWithTimeInterval:1.0
     target:self
     selector:@selector(timerTick:)
     userInfo:nil
     repeats:YES];
//然后再添加到NSRunLoopCommonModes里
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0
     target:self
     selector:@selector(timerTick:)
     userInfo:nil
     repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

相关文章

  • 以+ scheduledTimerWithTimeInterva

    nstimer默认运行在NSDefaultRunMode 下,当页面�滑动,并不是这个mode,是UITracki...

  • 以+ scheduledTimerWithTimeInterva

    以+ scheduledTimerWithTimeInterval...的方式触发的timer,在滑动页面上的列表...

  • 日以记,以思,以传神

    不知道为什么,突然就想写这么一个日记册。一是不想这么颓废地过了,每天记录点东西作为反思,也充当《了凡四训》的功过格...

  • 以平静,以勇敢

    意外丧偶……来不及说再见……深受打击……怀疑人生……慢慢接受……沉淀悲伤……修炼复原力……逐渐走出阴霾……这...

  • 以以已独

    夜以深,晚以静。 你已睡,我独醒。 烟以灭,情以尽。 路已空,我独在。 床以暖,心以冷。 酒已喝,我独醉。 念以俱...

  • 以享以祀

    群里见到有人发了两句话,试着译了一下,没有想到内容居然是真的!而且文字的表现手法非常奇特,很像是金文时代的产物,估...

  • 以自由以独立

    学习英语遇到了瓶颈 一是学习时间不够 二是没有找到合适的语境 学习棋类也遇到了瓶颈 一是时间不够 二是无论是学英语...

  • 以日以年

  • 以日以年

    ——致我生命的另一半 唇瓣,一翕一张犹如 时光之翼 反复亲吻的那些词语 有的,让舌尖变得温柔 或在露珠的凝望中 慢...

  • 以眼泪 以沉默

    始料不及,明天,你就十八岁,正式成年了。很久很久之前的我以为,我们的故事,或者说是我一个人的臆想与折腾,我会...

网友评论

      本文标题:以+ scheduledTimerWithTimeInterva

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