gpt4 book ai didi

ios - 如何制作一个持久的(多任务感知)秒表?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:27:23 31 4
gpt4 key购买 nike

我正在使用 NSTimer 制作秒表。如果用户切换到不同的应用程序,我希望它继续工作,但现在它只在应用程序运行时工作。我认为通过在计时器启动时记录时间戳来解决这个问题可能非常简单,但我不确定如何将其与在中间暂停/重新启动计时器的能力相协调。

我的代码:

-(IBAction)start;
{
if(sharedInstance.timer == nil){
sharedInstance.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(showActivity) userInfo:nil repeats:YES];
sharedInstance.timerRunning = YES;
}
}


-(IBAction)stop;
{
[sharedInstance.timer invalidate];
sharedInstance.timer = nil;
sharedInstance.timerRunning = NO;
}


-(void)showActivity;
{
sharedInstance.elapsedTime += 1;

int hours = sharedInstance.elapsedTime / 3600 ;
int minutes = sharedInstance.elapsedTime / 60 - hours * 60;
int seconds = sharedInstance.elapsedTime - hours * 3600 - minutes * 60;

sharedInstance.timeString = [NSString stringWithFormat:@"%02d:%02d:%02d", hours, minutes, seconds];
self.readout.text = sharedInstance.timeString;
}

-(void)viewDidLoad {
sharedInstance = [DataSingleton sharedInstance];
if (sharedInstance.timeString==nil) {
sharedInstance.timeString=@"00:00:00";
}
self.readout.text = sharedInstance.timeString;
[sharedInstance.timer invalidate];
sharedInstance.timer = nil;
if(sharedInstance.timerRunning) {
[self start];
}
[super viewDidLoad];
}

-(void)reset {
[self stop];
sharedInstance.elapsedTime = 0;
sharedInstance.timeString = @"00:00:00";
self.readout.text = sharedInstance.timeString;
}

最佳答案

每次调用 showActivity 时,您都可以获得一个新的时间戳,并从中减去旧的时间戳,从而及时获得变化。然后将其添加到 elapsedTime 而不是 1。

关于ios - 如何制作一个持久的(多任务感知)秒表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7224150/

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