재개 기능이 NSTime에서 올바르게 작동하지 않습니다.

user4876182

스톱워치로 작동하는 NSTimer가 있습니다. 시간을 계산하고 정상적으로 작동하는 일시 정지 기능이 있지만 기능은 계속 작동하지 않습니다. 타이머는 일시 중지 된 것 같지만 레이블을 업데이트하지 않은 것 같습니다. 버튼을 누르면 아래로 내려 오면 당신이 떠난 곳에서 계속해서 멈추지 않고 계속 계산됩니다. 이 문제를 어떻게 해결할 수 있습니까?

이것은 내 크로노 미터 코드입니다.

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUp];
    self.isPaused = NO;

}

- (void) setUp {
    startDate = [NSDate date];
    _timer = [NSTimer scheduledTimerWithTimeInterval: 1.0/100.0 target: self selector: @selector(timerUpdating) userInfo: nil repeats: true];
}

-(void)timerUpdating {
    NSDate *currentDate = [NSDate date];
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
    NSDate *timerDate  = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSDateFormatter *dateFormater = [[NSDateFormatter alloc]init];
    [dateFormater setDateFormat:@"mm:ss"];
    [dateFormater setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
    NSString *timeString = [dateFormater stringFromDate:timerDate];
    if (self.isPaused == NO){
        _timerLabel.text = timeString;
    }
}


- (IBAction)pauseAction:(id)sender {
    [self pauseTimer:self.timer];
}

- (IBAction)resumeAction:(id)sender {
    [self resumeTimer:self.timer];
}

-(void) pauseTimer:(NSTimer *)timer {
    self.isPaused = YES;
    self.pauseStart = [NSDate date];
    self.previousFireDate = [timer fireDate];
    [timer setFireDate:[NSDate distantFuture]];
}

-(void) resumeTimer:(NSTimer *)timer {
    self.isPaused =  NO;
    NSDate *currentDate = [NSDate date];
    NSTimeInterval pauseTime = [currentDate timeIntervalSinceDate:pauseStart];
    NSDate *neededFireDate = [NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate];
    [timer setFireDate:neededFireDate];
    NSLog(@"Fire Date: %@", timer.fireDate);
}
다니엘

에서 timerUpdating당신은 설정 NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];. 사용자가 타이머를 일시 중지했는지 여부는 고려하지 않습니다.

이 동작을 수정하려면 다음과 같이 할 수 있습니다.

.h에서 (멤버 변수 설정) :

NSTimeInterval pausedTime;

.m (3 줄 편집)

- (void)viewDidLoad {
    [super viewDidLoad];
    [self setUp];
    self.isPaused = NO;
    pausedTime = 0;    //edit
}

- (void) setUp {
    startDate = [NSDate date];
    _timer = [NSTimer scheduledTimerWithTimeInterval: 1.0/100.0 target: self selector: @selector(timerUpdating) userInfo: nil repeats: true];
}

-(void)timerUpdating {
    NSDate *currentDate = [NSDate date];
    NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate] - pauseTime;//edit
    NSDate *timerDate  = [NSDate dateWithTimeIntervalSince1970:timeInterval];

    NSDateFormatter *dateFormater = [[NSDateFormatter alloc]init];
    [dateFormater setDateFormat:@"mm:ss"];
    [dateFormater setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
    NSString *timeString = [dateFormater stringFromDate:timerDate];
    if (self.isPaused == NO){
        _timerLabel.text = timeString;
    }
}


- (IBAction)pauseAction:(id)sender {
    [self pauseTimer:self.timer];
}

- (IBAction)resumeAction:(id)sender {
    [self resumeTimer:self.timer];
}

-(void) pauseTimer:(NSTimer *)timer {
    self.isPaused = YES;
    self.pauseStart = [NSDate date];
    self.previousFireDate = [timer fireDate];
    [timer setFireDate:[NSDate distantFuture]];
}

-(void) resumeTimer:(NSTimer *)timer {        
    self.isPaused =  NO;
    NSDate *currentDate = [NSDate date];
    NSTimeInterval pauseTime = [currentDate timeIntervalSinceDate:pauseStart];
    pausedTime += pauseTime;//edit
    NSDate *neededFireDate = [NSDate dateWithTimeInterval:pauseTime sinceDate:previousFireDate];
    [timer setFireDate:neededFireDate];
    NSLog(@"Fire Date: %@", timer.fireDate);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

재귀 데이터에 대한 데이터 유형 정의가 올바르게 작동하지 않습니다.

분류에서Dev

vim 설정이 zsh에서 올바르게 작동하지 않습니다.

분류에서Dev

Java에서 파일이 올바르게 작동하지 않습니다.

분류에서Dev

angularjs에서 선택이 올바르게 작동하지 않습니다.

분류에서Dev

양식 제출이 jquery에서 올바르게 작동하지 않습니다.

분류에서Dev

Shuffle 기능이 Swift 1.2에서 올바르게 구현되지 않습니다.

분류에서Dev

Gridview에 대한 페이징이 올바르게 작동하지 않습니다.

분류에서Dev

UITableView 모서리 반경이 올바르게 작동하지 않습니다.

분류에서Dev

Apache URL 재 작성이 올바르게 작동하지 않음

분류에서Dev

페이지에 2 개 이상의 iFrame이있는 경우 Chrome iFrame 기록이 올바르게 작동하지 않습니다. (버전 35.0.1916.114)

분류에서Dev

C ++ 11 : map :: lower_bound가 Linux에서 2 개 이하의 요소에 대해 올바르게 작동하지 않습니다.

분류에서Dev

개체에 동적으로 메서드를 추가하는 것이 올바르게 작동하지 않음 (setattr)

분류에서Dev

타이머가 목록보기에서 올바르게 작동하지 않습니다.

분류에서Dev

Int.tryparse가 If 조건에서 올바르게 작동하지 않습니다-설명이 있습니까?

분류에서Dev

Int.tryparse가 If 조건에서 올바르게 작동하지 않습니다-설명이 있습니까?

분류에서Dev

작업 필터 특성이 허브 클래스에서 올바르게 작동하지 않습니다.

분류에서Dev

이것은 버그입니까? Python 속성이 + =에서 올바르게 작동하지 않습니다.

분류에서Dev

JQuery에서 ViewBag 개체를 사용하면 값이 올바르게 표시되지 않습니다.

분류에서Dev

ActionChains Selenium Python이 올바르게 작동하지 않습니다.

분류에서Dev

Oracle Update 문이 올바르게 작동하지 않습니다.

분류에서Dev

If 문이 올바르게 작동하지 않습니다.

분류에서Dev

Apache RewriteRule이 올바르게 작동하지 않습니다.

분류에서Dev

If 문이 올바르게 작동하지 않습니다.

분류에서Dev

저장된 선택기가 each ()에서 올바르게 작동하지 않습니다.

분류에서Dev

또는 선택기가 jquery에서 올바르게 작동하지 않습니다.

분류에서Dev

3 열 레이아웃이 Google 크롬에서 올바르게 작동하지 않습니다.

분류에서Dev

이중 슬래시가 문자열 C #에서 올바르게 작동하지 않습니다.

분류에서Dev

Umbraco 사전 번역이 localhost에서 올바르게 작동하지 않습니다.

분류에서Dev

Eclipse RCP 3.x 플러그인이 Eclipse 4.x에서 올바르게 작동하지 않습니다.

Related 관련 기사

  1. 1

    재귀 데이터에 대한 데이터 유형 정의가 올바르게 작동하지 않습니다.

  2. 2

    vim 설정이 zsh에서 올바르게 작동하지 않습니다.

  3. 3

    Java에서 파일이 올바르게 작동하지 않습니다.

  4. 4

    angularjs에서 선택이 올바르게 작동하지 않습니다.

  5. 5

    양식 제출이 jquery에서 올바르게 작동하지 않습니다.

  6. 6

    Shuffle 기능이 Swift 1.2에서 올바르게 구현되지 않습니다.

  7. 7

    Gridview에 대한 페이징이 올바르게 작동하지 않습니다.

  8. 8

    UITableView 모서리 반경이 올바르게 작동하지 않습니다.

  9. 9

    Apache URL 재 작성이 올바르게 작동하지 않음

  10. 10

    페이지에 2 개 이상의 iFrame이있는 경우 Chrome iFrame 기록이 올바르게 작동하지 않습니다. (버전 35.0.1916.114)

  11. 11

    C ++ 11 : map :: lower_bound가 Linux에서 2 개 이하의 요소에 대해 올바르게 작동하지 않습니다.

  12. 12

    개체에 동적으로 메서드를 추가하는 것이 올바르게 작동하지 않음 (setattr)

  13. 13

    타이머가 목록보기에서 올바르게 작동하지 않습니다.

  14. 14

    Int.tryparse가 If 조건에서 올바르게 작동하지 않습니다-설명이 있습니까?

  15. 15

    Int.tryparse가 If 조건에서 올바르게 작동하지 않습니다-설명이 있습니까?

  16. 16

    작업 필터 특성이 허브 클래스에서 올바르게 작동하지 않습니다.

  17. 17

    이것은 버그입니까? Python 속성이 + =에서 올바르게 작동하지 않습니다.

  18. 18

    JQuery에서 ViewBag 개체를 사용하면 값이 올바르게 표시되지 않습니다.

  19. 19

    ActionChains Selenium Python이 올바르게 작동하지 않습니다.

  20. 20

    Oracle Update 문이 올바르게 작동하지 않습니다.

  21. 21

    If 문이 올바르게 작동하지 않습니다.

  22. 22

    Apache RewriteRule이 올바르게 작동하지 않습니다.

  23. 23

    If 문이 올바르게 작동하지 않습니다.

  24. 24

    저장된 선택기가 each ()에서 올바르게 작동하지 않습니다.

  25. 25

    또는 선택기가 jquery에서 올바르게 작동하지 않습니다.

  26. 26

    3 열 레이아웃이 Google 크롬에서 올바르게 작동하지 않습니다.

  27. 27

    이중 슬래시가 문자열 C #에서 올바르게 작동하지 않습니다.

  28. 28

    Umbraco 사전 번역이 localhost에서 올바르게 작동하지 않습니다.

  29. 29

    Eclipse RCP 3.x 플러그인이 Eclipse 4.x에서 올바르게 작동하지 않습니다.

뜨겁다태그

보관