我有问题如何停止计时器。我真的不明白它是如何工作的。请帮帮我。
我有一个智商应用程序,假设有10个问题,每个问题在4秒内无法回答。
- (void) requestForItem
{
TrainEnglishAppDelegate *delegate = (TrainEnglishAppDelegate*)[UIApplication sharedApplication].delegate;
NSDictionary *item = [delegate.allQuestions objectAtIndex:z];
questionLabel.text = [item objectForKey:kQuestion];
questionNumber.text = [NSString stringWithFormat:@"Question %d/%d",no,totalNo];
NSArray *answers = [item objectForKey:kAnswers];
aLabel.text = [answers objectAtIndex:0];
bLabel.text = [answers objectAtIndex:1];
cLabel.text = [answers objectAtIndex:2];
[NSTimer scheduledTimerWithTimeInterval:4.0 target:self selector:@selector(pressToNextQuestion:) userInfo:nil repeats:NO];
}
这一直有效,直到出现跳过问题按钮。用户按下一个按钮,跳过问题,但该问题中的计时器仍在计时。然后当我在另一个问题时,我的时间减少了。当我按下跳过时如何重置计时器?请帮我。非常感谢
答案 0 :(得分:3)
定时器失效可以通过以下方式完成
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:4.0 target:self selector:@selector(pressToNextQuestion:) userInfo:nil repeats:NO];
[timer invalidate]; //To stop the timer
所以把你的计时器放在一个变量中并停止它,只需在你要停止它的地方使用第二行。
答案 1 :(得分:0)
您可以将pulseTimer声明为类变量,以便稍后访问它以使计时器无效。在问题选择的开始和结束时进行这些调用并给出答案,您可以实现所需的功能。
-(void)createTimer
{
self.pulseTimer = [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(pressToNextQuestion) userInfo:nil repeats:NO];
[self.pulseTimer fire];
}
//这将停止计时器,从此处开始,您可以重新启动下一个问题。
-(void)deactivateTimer {
[pulseTimer invalidate];
}