2013-08-13 6 views
5

나는 타이머를 사용하는 게임을 가지고있다. 사용자가 버튼을 선택할 수 있도록 타이머를 일시 중지하고 해당 버튼을 다시 클릭하면 타이머가 일시 중지됩니다. 타이머에 코드가 이미 있습니다. 타이머 및 이중 동작 버튼을 일시 중지하는 데 도움이 필요합니다. 타이머NSTimer를 일시 중지하는 방법은 무엇입니까?

코드 :

-(void)timerDelay { 

    mainInt = 36; 

    timer = [NSTimer scheduledTimerWithTimeInterval:1.0 
             target:self 
             selector:@selector(countDownDuration) 
             userInfo:nil 
             repeats:YES]; 
} 

-(void)countDownDuration { 

    MainInt -= 1; 

    seconds.text = [NSString stringWithFormat:@"%i", MainInt]; 
    if (MainInt <= 0) { 
     [timer invalidate]; 
     [self delay]; 
    } 

} 
+0

정확했다. 해당 코드를 질문에 편집하거나 제목에 [SOLVED]를 추가하지 않아도됩니다. StackOverflow에 게시하는 올바른 방법에 대해 자세히 알아 보려면 [도움말]을 읽는 것이 좋습니다. – madth3

답변

16

매우 쉽습니다. 당신을 도움이 경우 올바른로 TBlue의 답변을 표시

// Declare the following variables 
BOOL ispaused; 
NSTimer *timer; 
int MainInt; 

-(void)countUp { 
    if (ispaused == NO) { 
     MainInt +=1; 
     secondField.stringValue = [NSString stringWithFormat:@"%i",MainInt]; 
    } 
} 

- (IBAction)start1Clicked:(id)sender { 
    MainInt=0; 
    timer=[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(countUp) userInfo:Nil repeats:YES]; 
} 

- (IBAction)pause1Clicked:(id)sender { 
    ispaused = YES; 
} 

- (IBAction)resume1Clicked:(id)sender { 
    ispaused = NO; 
} 
5

아무 일시 정지없고 NSTimer의 기능을 다시 시작합니다. 아래 코드처럼 구현할 수 있습니다.

- (void)startTimer 
{ 
    m_pTimerObject = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
} 

- (void)fireTimer:(NSTimer *)inTimer 
{ 
    // Timer is fired. 
} 

- (void)resumeTimer 
{ 
    if(m_pTimerObject) 
    { 
     [m_pTimerObject invalidate]; 
     m_pTimerObject = nil;   
    } 
    m_pTimerObject = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(fireTimer:) userInfo:nil repeats:YES]; 
} 

- (void)pauseTimer 
{ 
    [m_pTimerObject invalidate]; 
    m_pTimerObject = nil; 
} 
+5

일시 중지하지 않고 중지했다가 다시 시작합니다. –

+0

@CarlVeazey 답변에 언급 된대로 NSTimer에는 "일시 중지"기능이 없으므로 모든 대답 (허용 된 것을 포함하여)은 그 사실을 해결해야합니다. 이 답변은 가치있는 일을 아무것도하지 않는 타이머를 유지하지 않기 때문에 허용 된 것보다 낫습니다. +1 –

+0

@Nate 복제본의 응답은 여전히 ​​일시 중지 기능을 제공하면서이 사실을 해결하는 것으로 보입니다. 나는 그것을 지적하는 것이 부당하다고 생각하지 않습니다. –

관련 문제