How update a label periodically on iOS (every second)?(如何在 iOS 上定期更新标签(每秒)?)
问题描述
我使用每秒触发一次的 NSTimer 并更新一个显示事件前剩余时间的标签.
I use a NSTimer which fires every second and updates a label which displays the remaining time until an event.
到目前为止我工作得很好.问题是当我滚动 TableView 时,我的标签没有更新,因为 MainThread 被触摸/滚动事件阻塞.
I works fine so far. The problem is while I am scrolling the TableView my Label does not update, because the MainThread is blocked by the touch/scroll event.
我曾考虑为 Timer 创建第二个线程,但无论如何我无法从后台线程更新标签.我不得不将它与 performSelector... 放在 MainThread 上,它会像以前一样卡住.
I thought about creating a second thread for the Timer but I couldn't update the label from a background thread anyways. I had to queue it with performSelector... on the MainThread where it would stuck like before.
有没有办法在滚动时更新标签?
Is there any way to update the label while scrolling?
推荐答案
问题是在主线程跟踪触摸时,scheduledTimer 不会被调用.您需要在主运行循环中安排计时器.
The problem is that a scheduledTimer will not get called while the main thread is tracking touches. You need to schedule the timer in the main run loop.
所以不要这样做
[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateLabel:) userInfo:nil repeats:YES];
使用
NSTimer* timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateLabel:) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
这篇关于如何在 iOS 上定期更新标签(每秒)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:如何在 iOS 上定期更新标签(每秒)?
基础教程推荐
- 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar? 2022-01-01
- 如何在 iPhone 上显示来自 API 的 HTML 文本? 2022-01-01
- android 应用程序已发布,但在 google play 中找不到 2022-01-01
- Kivy Buildozer 无法构建 apk,命令失败:./distribute.sh -m “kivy"d 2022-01-01
- 如何让对象对 Cocos2D 中的触摸做出反应? 2022-01-01
- 当从同一个组件调用时,两个 IBAction 触发的顺序是什么? 2022-01-01
- 如何在 UIImageView 中异步加载图像? 2022-01-01
- 在 gmail 中为 ios 应用程序检索朋友的朋友 2022-01-01
- UIWebView 委托方法 shouldStartLoadWithRequest:在 WKWebView 中等效? 2022-01-01
- Android:对话框关闭而不调用关闭 2022-01-01