0

我只想在用户按下开始按钮并自行停止它而不是使用按钮来执行此操作时运行某个方法 20 秒。但它也应该在用户在下一回合 20 秒后按下开始按钮时触发。我如何使用 NStimer 来实现这个?抱歉没有发布任何代码提前谢谢!

4

1 回答 1

3
// Assume ARC - otherwise do the proper retains/releases
{
    NSTimer *timer; // keep a reference around so you can cancel the timer if you need to
    NSDate *timerDate;
}

- (IBAction)buttonPressed:(id)sender
{
    // disable button til the time has passed
    [sender setEnabled:NO];

    // make sure its diabled til we're done here
    timerDate = [NSDate date];
    NSTimeInterval interval = 1; // 1 gets you a callback every second. If you just wnat to wait 20 seconds change it
    // schedule it
    timer = [NSTimer ]scheduledTimerWithTimeInterval:time target:self selector:@selector(myTimeRoutine:) userInfo:nil repeats:YES];
}

- (void)myTimeRoutine:(NSTimer *)timer
{
    // do something ...

    NSTimeInterval interval = -[timerDate timeIntervalSinceNow]; // return value will be negative, so change sign
    if(interval >= 20) {
        // I'm done now
        myButton.enabled = YES; // so it can be tapped again
        [timer cancel];         // dont want to get any more messages
        timer = nil;            // ARC way to release it
        timerDate = nil;
    }
}
于 2012-08-21T16:52:51.003 回答