【问题标题】:iPhone Countdown Timer For a Selected DurationiPhone 倒数计时器用于选定的持续时间
【发布时间】:2012-07-10 18:24:58
【问题描述】:

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

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

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

提前致谢。

PS:老实说,我不知道该怎么做。关于将时间存储在 Web 服务中的格式以及许多其他内容(例如在 NSTimer 循环运行后程序是否会继续执行等),存在太多的混淆。所以你知道我的意思。是的,NSTimer 确实解决了 Alex 所说的问题,并提供了示例代码。

【问题讨论】:

  • 您查看过NSTimer 的文档吗?你试过什么?

标签: iphone ios ios5 timer nstimer


【解决方案1】:

查看NSTimer 的文档。

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

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

然后在滴答声中,您将减少一个保存剩余时间的变量,并更新显示屏上的标签。

另外,如果您想要一些工作示例代码,请在 GitHub 上check out my little countdown app

【讨论】:

    【解决方案2】:

    试试这些代码,我已经在我的应用中实现了。最适合重新发送 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;
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多