사용자가 단추를 클릭 할 때 실행되는 간단한 카운트 다운 타이머 메서드가 있습니다.UIButton을 빨리 클릭하면 UIButton이 여러 번 메서드를 실행합니다.
사용자가 버튼을 클릭하면 카운트 다운 타이머가 1 초마다 카운트 다운되기 시작합니다. 그러나 버튼을 실제로 빨리 클릭하면 메서드가 여러 번 실행되어 카운트 다운 타이머가 가속화되고 괴물이 발생하는 것으로 나타났습니다. "편안한"클릭으로 한 번 클릭하면 정상적으로 작동합니다.
이제 클릭 한 후에 버튼을 비활성화하려했으나 한 번의 클릭으로 버튼을 사용할 수 없게되었습니다. 버튼을 여러 번 클릭하면 문제가 계속 발생합니다. 이 버튼은, 내가 "buttonClickTracker"
함께 노력하면 타이머를 시작하기 위해 할 수있는 몇 가지 컨트롤이 있지만이 해결되지 않았다 내가 추측하고있어
#pragma mark -
#pragma mark startTimerButtonClicked
- (IBAction)startTimerButtonClicked:(UIButton *)sender
{
if (!self.timerIsRunning) // Run timer only if it's not allready running
{
[self setupTimer]; // Start the timer
}
else
{
NSLog(@"Timer should pause with secondsCounter: %d and not continue to run", secondsCounter);
}
}
#pragma mark -
#pragma mark setupTimer
- (void)setupTimer
{
/* -- Timer -- */
self.timerWorkOutCountDown = [NSTimer scheduledTimerWithTimeInterval:1.0
target:self
selector:@selector(startTimer)
userInfo:nil
repeats:YES];
}
#pragma mark -
#pragma mark Start timer
- (void)startTimer
{
self.timerIsRunning = YES;
secondsCounter = workOutSecondsCounter - 1;
int minutes = secondsCounter/60;
int seconds = secondsCounter - (minutes * 60);
NSString *timerOutput = [NSString stringWithFormat:@"00:%02d",seconds];
[labelTimerCountDown setText:timerOutput];
if (secondsCounter == 0)
{
[self resetTimerWithCount:0 andString:@"00:00"];
}
}
#pragma mark -
#pragma mark Reset timer
- (void)resetTimerWithCount:(int)count andString:(NSString *)string
{
self.timerIsRunning = NO;
secondsCounter = count;
[timerWorkOutCountDown invalidate];
timerWorkOutCountDown = nil;
[labelTimerCountDown setText:string];
}
#pragma mark -
#pragma mark resetTimerButtonClicked
- (IBAction)resetTimerButtonClicked:(UIButton *)sender
{
[self resetTimerWithCount:20 andString:@"00:20"];
NSLog(@"Reset timer secondsCounter: %d", secondsCounter);
}
: 여기
내 방법이 있습니다 문제. 이 빠른 클릭 시나리오가 발생하지 않도록하고 싶습니다. 그래서 도움을 얻을 수있어서 기쁩니다. :)
도와 주셔서 감사합니다. 제이 코코 (Jason Coco)에게이 문제를 설명해 주셔서 감사합니다. – Oskariagon