gpt4 book ai didi

objective-c - 如何让 NSTimer 在调整 timeInterval 时继续 - iOS

转载 作者:行者123 更新时间:2023-11-28 22:42:45 25 4
gpt4 key购买 nike

我有一个旋钮 IBAction 可以调整 NSTimertimeInterval

但我找不到一种方法让计时器在调整 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/

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