在我的游戏中,我有一个NSTimer,当点击一个按钮时,计时器从10分钟倒计时到0.同时点击按钮会触发UILocalNotification,所以如果用户关闭应用程序,它将在10分钟达到0时发出消息。
我的问题是,如果用户关闭应用程序,并在10分钟或更改视图之前打开它,标签就无法跟踪时间!
所以我的问题是,即使应用关闭/更改视图并且能够在标签中显示此计时器,我将如何继续倒数计时器。
这是我的计时器代码:
- (IBAction)startTimer {
mainInt = 600;
timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(countDown) userInfo:nil repeats:YES];
}
- (void)countDown {
mainInt -= 1;
int seconds = mainInt % 60;
int minutes = (mainInt - seconds) / 60;
timerLabel.text = [NSString stringWithFormat:@"%d:%.2d", minutes, seconds];
if (mainInt == 0) {
[timer invalidate];
}
}
设置UILocalNotification的代码:
- (IBAction)startTime {
UILocalNotification * theNotification = [[UILocalNotification alloc] init];
theNotification.alertBody = @"Alert text";
theNotification.alertAction = @"Ok";
theNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:600];
[[UIApplication sharedApplication] scheduleLocalNotification:theNotification];
}
感谢您的帮助!
答案 0 :(得分:0)
当您的应用程序关闭或进入后台时,您无法保持NSTimer正常运行。
在应用程序启动期间,您可以查找计划的本地通知。如果存在,您可以询问通知的触发时间(炒作),并将其与设备时间进行比较,以设置您希望在标签中显示的新计数器值。