2011-07-15 36 views
18

Tôi đang cố tạo chức năng loại "dừng đồng hồ". Tôi có một nhãn (để hiển thị thời gian đã trôi qua) và hai nút (bắt đầu và ngừng bộ hẹn giờ). Các nút bắt đầu và dừng gọi các hàm startTimerstopTimer tương ứng. Mỗi giây bộ hẹn giờ đều kích hoạt và gọi hàm increaseTimerCount. Tôi cũng có một ivar timerCount giữ thời gian trôi qua tính bằng giây.Tạo Bộ hẹn giờ iOS

- (void)increaseTimerCount 
{ 
    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount++]; 
} 

- (IBAction)startTimer 
{ 
    timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(increaseTimerCount) userInfo:nil repeats:YES]; 

} 

- (IBAction)stopTimer 
{ 
    [timer invalidate]; 
    [timer release]; 
} 

Vấn đề là có vẻ như có sự chậm trễ khi nhấn nút khởi động (mà tôi giả định là do khởi động lại bộ hẹn giờ mỗi lần startTimer được gọi). Có cách nào để chỉ tạm dừng và tiếp tục hẹn giờ mà không làm mất hiệu lực và tạo lại nó không? hoặc một cách tốt hơn/thay thế để làm điều này?

Cảm ơn.

Trả lời

9

Bạn không thể tạm dừng bộ hẹn giờ mà không sử dụng invalidate. Những gì bạn có thể làm là thêm

[timer fire]; 

sau khi bạn tạo bộ hẹn giờ trong startTimer.

11

Một chút ngày nhưng nếu ai đó vẫn còn quan tâm đến ...

không "dừng lại" bộ đếm thời gian, nhưng dừng incrementing trong tạm dừng, ví dụ

- (void)increaseTimerCount 
{ 
    if (!self.paused){ 
     timerCount++ 
    } 

    timerCountLabel.text = [NSString stringWithFormat:@"%d", timerCount]; 
} 
Các vấn đề liên quan