当前位置:  开发笔记 > 编程语言 > 正文

(Swift)滚动时NSTimer停止

如何解决《(Swift)滚动时NSTimer停止》经验,为你挑选了1个好方法。

帮我.我试图用UIScrollView制作NSTimer.但是在UIScroll View滚动期间NSTimer停止..

如何在滚动期间保持工作NSTimer?



1> vacawama..:

我创建了一个简单的项目,其中包含一个scrollView和一个用NSTimer.更新的标签.使用时创建计时器scheduledTimerWithInterval,滚动时计时器不会运行.

解决的办法是与创建计时器NSTimer:timeInterval:target:selector:userInfo:repeats,然后调用addTimerNSRunLoop.mainRunLoop()使用mode NSRunLoopCommonModes.这允许计时器在滚动时更新.

它正在运行:

演示.gif

这是我的演示代码:

class ViewController: UIViewController {

    @IBOutlet weak var timerLabel: UILabel!
    var count = 0

    override func viewDidLoad() {
        super.viewDidLoad()

        timerLabel.text = "0"

        // This doesn't work when scrolling
        // let timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)

        // Do these two lines instead:
        let timer = NSTimer(timeInterval: 1, target: self, selector: "update", userInfo: nil, repeats: true)

        NSRunLoop.mainRunLoop().addTimer(timer, forMode: NSRunLoopCommonModes)
    }

    func update() {
        count += 1
        timerLabel.text = "\(count)"
    }
}
斯威夫特3:
let timer = Timer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)
RunLoop.main.add(timer, forMode: RunLoopMode.commonModes)

推荐阅读
云聪京初瑞子_617
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有