Timer在含有滚动视图的控制器中出现不起作用的问题

在一个vc中同时有scrollview和Timer,
要求:倒计时达到3s,并且scrollview滚动至底部后某个按钮可用
出现问题:滚动的过程中倒计时出现暂停
解决方案:使用异步线程,并且在异步线程中将timer添加到runloop当中

RunLoop.current.add(timer, forMode: .common)

解决方案原理:当scrollview滚动时,系统会自动将NSDefaultRunLoopMode.default切换成UITrackingRunLoopMode,Timer无法获得RunLoop,导致此问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、APP的启动过程、main函数? 内核初始化空间创建进程-》加载解析执行文件 - 》载入动态链接器(加载依赖库...
    032c6843a285阅读 837评论 2 12
  • OC语言基础 1.类与对象 类方法 OC的类方法只有2种:静态方法和实例方法两种 在OC中,只要方法声明在@int...
    奇异果好补阅读 4,358评论 0 11
  • 一 什么是Runloop 二 Runloop的运行逻辑 三 Runloop在实际开发中的应用 一 什么是Runlo...
    当前明月阅读 208评论 0 3
  • 1、场景一 需要保证线程的长时间存活 在iOS开发过程中,有时间我们不希望某些花费很长时间的操作长时间占用并阻塞主...
    wsj_2012阅读 361评论 0 1
  • 目录 Runloop RunLoop 与线程 个人理解总结 应用场景 1. 什么是RunLoop 基本作用 保持程...
    Ryan___阅读 1,537评论 0 13