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 に答える