ユーザーがスタートボタンを押したときに特定のメソッドを20秒間実行し、ボタンを使用して停止するのではなく、独自に停止したいだけです。ただし、次のターンで 20 秒後にユーザーが開始ボタンを押したときにもトリガーする必要があります。NStimer を使用してこれを実装するにはどうすればよいですか? コードを投稿していないことをお詫び申し上げます。よろしくお願いします。
質問する
890 次
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 に答える