选定持续时间的iPhone倒数计时器

时间:2012-07-10 18:24:58

标签: iphone ios ios5 timer nstimer

我希望在我的应用程序中创建一个倒数计时器,以便我可以提供一定的持续时间(例如15分钟或15:00)并从一个动作开始。

我还需要倒数计时器来从外部Web服务获取经过的持续时间和总持续时间信息,并开始倒计时剩余时间。

这实际上是针对测验应用程序,其中将向用户呈现一系列问题,并且计时器将被放置在问题屏幕上(对于整个测验而不是仅针对一个问题)。用户可以设置测验的持续时间,倒数计时器将在用户开始参加测验后立即开始。还有一个暂停功能,用户可以暂停测试,并且已经过的时间信息和总持续时间将在Web服务中注册。用户可以随着倒数计时器从暂停时开始随时恢复测验(从网络服务获取此信息,即)。

提前致谢。

PS:说实话,我不知道如何去做。关于什么格式将在Web服务中存储的时间以及许多其他内容(例如,如果NSTimer在循环运行之后程序将继续存在等)那么太混淆了。所以你知道我的意思。是的,NSTimer确实解决了这个问题,因为Alex告诉并提供了示例代码。

2 个答案:

答案 0 :(得分:3)

查看NSTimer的文档。

通常,您将创建一个每秒调用一次方法的NSTimer,如下所示:

NSTimer *theTimer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(tick) userInfo:nil repeats:YES];

然后在勾选中,您将减少保留剩余时间的变量,并更新显示屏上的标签。

另外,如果你想在GitHub上使用一些工作示例代码check out my little countdown app

答案 1 :(得分:0)

试试这些代码,我已经在我的应用程序中实现了它。最适合重发OTP类型的功能。

int secondsLeft;
int hours, minutes, seconds;

secondsLeft = 60;
[self countdownTimer];

-(void)countdownTimer {
//    secondsLeft = hours = minutes = seconds = 0;
timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateCounter:) userInfo:nil repeats:YES];

}

- (void)updateCounter:(NSTimer *)theTimer {
if(secondsLeft > 0 ) {
    secondsLeft -- ;
    hours = secondsLeft / 3600;
    minutes = (secondsLeft % 3600) / 60;
    seconds = (secondsLeft %3600) % 60;
    labelSeconds.text = [NSString stringWithFormat:@"%02d seconds left.",seconds];
} else {

    [timer invalidate];
    return;
}

}