如何重置计时器?

时间:2011-11-23 08:42:57

标签: iphone objective-c

我有问题如何停止计时器。我真的不明白它是如何工作的。请帮帮我。

我有一个智商应用程序,假设有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]; 
}

这一直有效,直到出现跳过问题按钮。用户按下一个按钮,跳过问题,但该问题中的计时器仍在计时。然后当我在另一个问题时,我的时间减少了。当我按下跳过时如何重置计时器?请帮我。非常感谢

2 个答案:

答案 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];
}