我使用以下代碼顯示時間...我在我的viewController中滾動視圖...在這裏,我顯示的時間以00:00.00開始(mm:ss:SS)(分鐘:秒:毫秒)和目標遞增毫秒,基於毫秒的秒,基於秒的分鐘...但我想顯示從75:00.00(毫米:SS:SS)開始的時間,我想遞減毫秒,秒和分鐘00:00.00(毫米:ss.SS)...我怎麼能..?NStimer在iOS中無法正常工作
我已經問這所以在下面的鏈接... NSTimer Decrease the time by seconds/milliseconds
我我遵循代碼的時間不計算(在後臺也)當我拖動,並與出釋放滾動視圖按鍵...幫我在下面的代碼的變化...
enter code here
@interface ViewController : UIViewController
{
IBOutlet UILabel *time;
NSTimer *stopWatchTimer;
NSDate *startDate;
NSTimeInterval secondsAlreadyRun;
}
- (void)reset:(id)sender;
- (void)onStartPressed:(id)sender;
- (void)onStopPressed:(id)sender;
enter code here
-(void)showActivity:(NSTimer *)tim
{
NSDate *currentDate = [NSDate date];
NSTimeInterval timeInterval = [currentDate timeIntervalSinceDate:startDate];
// Add the saved interval
timeInterval += secondsAlreadyRun;
NSDate *timerDate = [NSDate dateWithTimeIntervalSince1970:timeInterval];
static NSDateFormatter * dateFormatter = nil;
if(!dateFormatter){
dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"mm:ss.SS"];
[dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:0.0]];
}
NSString *timeString=[dateFormatter stringFromDate:timerDate];
time.text = timeString;
// [dateFormatter release];
}
- (void)onStartPressed:(id)sender
{
stopWatchTimer = [NSTimer scheduledTimerWithTimeInterval:1/10
target:self
selector:@selector(showActivity:)
userInfo:nil
repeats:YES];
// Save the new start date every time
startDate = [[NSDate alloc] init]; // equivalent to [[NSDate date] retain];
[stopWatchTimer fire];
}
- (void)onStopPressed:(id)sender
{
// _Increment_ secondsAlreadyRun to allow for multiple pauses and restarts
secondsAlreadyRun += [[NSDate date] timeIntervalSinceDate:startDate];
[stopWatchTimer invalidate];
stopWatchTimer = nil;
// [startDate release];
// [self showActivity:stopWatchTimer];
}
也相關(和我最大的gottcha):每個線程都有自己的RunLoop對象。 [[NSRunLoop currentRunLoop]會給你當前線程的runloop對象;並根據你的代碼,如果你不在主線程上安排你的計時器,你的計時器可能永遠不會打勾。 – pretzels1337 2012-09-21 19:51:44