美文网首页
在Scroll 中NSTimer失效

在Scroll 中NSTimer失效

作者: 清雪飘香 | 来源:发表于2015-10-29 18:45 被阅读202次

    在项目中, 有个无限循环滚动的计时器功能,但是当当前的tableview 滚动时,会发现, 用定时器定时滚动的事件时间间隔不对,然后发现代码中创建NSTimer 的方式是用的
    [NSTimer scheduledTimerWithTimeInterval:<#(NSTimeInterval)#> target:<#(nonnull id)#> selector:<#(nonnull SEL)#> userInfo:<#(nullable id)#> repeats:<#(BOOL)#>]
    去创建的,这时NSTimer默认是添加到NSDefaultRunLoopMode中。

    所以当用户滑动屏幕时,run loop 的mode 将会切换到NSEventTrackingRunLoopMode 中。这样,当前的runloop 就是不是默认的了,而timer 也不再执行了,就会失效。

    解决这种问题,就是将当前需要计时滚动的timer 添加到另一个runloop 中,

    self.timer = [NSTimer timerWithTimeInterval:5.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
    
    [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
    

    Reference stackoverflow

    相关文章

      网友评论

          本文标题:在Scroll 中NSTimer失效

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