Ios 如何制作持久(支持多任务)秒表?
我正在用NSTimer做秒表。如果用户切换到其他应用程序,我希望它继续工作,但现在它只在应用程序运行时工作。我认为,在计时器启动时记录时间戳可能很简单,但我不太清楚如何与在中间暂停/重新启动计时器的能力相协调。p> 我的代码:Ios 如何制作持久(支持多任务)秒表?,ios,nstimer,multitasking,Ios,Nstimer,Multitasking,我正在用NSTimer做秒表。如果用户切换到其他应用程序,我希望它继续工作,但现在它只在应用程序运行时工作。我认为,在计时器启动时记录时间戳可能很简单,但我不太清楚如何与在中间暂停/重新启动计时器的能力相协调。p> 我的代码: -(IBAction)start; { if(sharedInstance.timer == nil){ sharedInstance.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:sel
-(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。我可以看看您的DataSingleton的样子吗?:)