我有一个旋钮IBAction
可调整timeInterval
的{{1}}。
但我无法在调整NSTimer
时找到让计时器持续开火的方法。我想这是因为我不断地使计时器无效并重新实例化,对吧?
有没有办法让它顺利工作 - 这样定时器会通过旋钮运动加速/减速?
timeInterval
答案 0 :(得分:1)
您可以在刻度线中重新创建计时器。
你必须创建一个名为interval的属性。
@property NSTimeInterval interval;
首先,初始化它:
self.interval = 100;
[self timerTick];
然后,您可以使用timerTick
方法重新创建计时器
- (void)timerTick {
if (self.interval) {
[self.timer invalidate];
self.timer = [NSTimer scheduledTimerWithTimeInterval:self.interval target:self selector:@selector(timerTick) userInfo:nil repeats:YES];
self.interval = 0;
}
// Do all the other stuff in the timer
}
然后您可以随时设置self.interval
,并自动重新创建计时器。
答案 1 :(得分:1)
它运行不顺畅的原因是因为你正在使用scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
,根据Apple的文档:
创建并返回一个新的NSTimer对象,并在默认模式下在当前运行循环上安排它。
默认模式被UI交互阻止,因此如果您正在控制旋钮,则会阻止计时器。如果您改为使用以下代码:
[[NSRunLoop currentRunLoop] addTimer:repeatingTimer forMode:NSRunLoopCommonModes];
然后UI不会阻止代码。