作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个旋钮 IBAction
可以调整 NSTimer
的 timeInterval
。
但我找不到一种方法让计时器在调整 timeInterval
时连续触发。我想这是因为我不断地使计时器失效并重新实例化,对吗?
有没有办法让它顺利工作 - 这样计时器就会随着旋钮的运动而加速/减速?
-(IBAction)autoSpeed:(UISlider *)sender
{
timeInterval = (60/sender.value) / 4;
if (seqState){
[self changeTempo];
}
[self displayBPM:[sender value]:[sender isTouchInside]];
}
-(void) changeTempo
{
if (repeatingTimer!= nil) {
[repeatingTimer invalidate];
repeatingTimer = nil;
repeatingTimer = [NSTimer scheduledTimerWithTimeInterval: timeInterval target:self selector:@selector(changeAutoSpeedLed) userInfo:nil repeats:YES];
}
else
repeatingTimer = [NSTimer scheduledTimerWithTimeInterval: timeInterval target:self selector:@selector(changeAutoSpeedLed) userInfo:nil repeats:YES];
}
最佳答案
它运行不流畅的原因是因为您正在使用 scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
,根据 Apple 的文档:
Creates and returns a new NSTimer object and schedules it on the current run loop in the default mode.
默认模式被 UI 交互阻止,因此如果您控制旋钮,计时器将被阻止。如果您改为使用如下代码:
[[NSRunLoop currentRunLoop] addTimer:repeatingTimer forMode:NSRunLoopCommonModes];
这样代码就不会被UI屏蔽了。
关于objective-c - 如何让 NSTimer 在调整 timeInterval 时继续 - iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14042472/
我是一名优秀的程序员,十分优秀!