gpt4 book ai didi

iphone - 拖动 UITableView 时 NSTimer 不工作

转载 作者:太空狗 更新时间:2023-10-30 03:17:39 24 4
gpt4 key购买 nike

我有一个带有倒数计时器的应用程序。我用一个标签来制作它,这个标签用一个从计时器调用的函数更新:

...
int timeCount = 300; // Time in seconds
...
NSTimer *myTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(actualizarTiempo:) userInfo:nil repeats:YES];
...
- (void)actualizaTiempo:(NSTimer *)timer {
timeCount -= 1;
if (timeCount <= 0) {
[timer invalidate];
} else {
[labelTime setText:[self formatTime:timeCount]];
}
}

注意:formatTime 是一个函数,它接收一个整数(秒数)并返回一个格式为 mm:ss 的 NSString

一切正常,也就是说,时间倒计时,但问题是我在应用程序中有一个 UITableView,如果我触摸表格并拖动它(沿着单元格移动),计时器会停止,直到我松开手指从屏幕...

这种行为正常吗?如果是,有什么办法可以避免它并使计时器在拖动表格时工作?

最佳答案

通过使用 scheduledTimerWithTimeInterval:,正如 j.tom.schroeder 所说,您的计时器会自动安排在默认模式的主运行循环上。这将防止您的计时器在您的运行循环处于非默认模式时触发,例如,在点击或滑动时。

不过,解决方案不是使用线程,而是为所有常见模式安排计时器:

NSTimer *timer = [NSTimer timerWithTimeInterval:1
target:self
selector:@selector(actualizarTiempo:)
userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

根据您希望在不停止计时器的情况下允许的事件类型,您还可以考虑 UITrackingRunLoopMode。有关运行循环模式的更多信息,请参阅 Apple Docs .

关于iphone - 拖动 UITableView 时 NSTimer 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11712546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com