ここでは、問題を簡単に解決する方法を示します。詳細な説明のための
宣言
@interface ViewController : UIViewController
{
IBOutlet UILabel * result;
NSTimer * timer;
int currentTime;
}
- (void)populateLabelwithTime:(int)milliseconds;
-(IBAction)start;
-(IBAction)pause;
@end
定義
- (void)viewDidLoad
{
[super viewDidLoad];
currentTime = 270000000; // Since 75 hours = 270000000 milli seconds
}
-(IBAction)start{
timer = [NSTimer scheduledTimerWithTimeInterval:.01 target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];
}
-(IBAction)pause{
[timer invalidate];
}
- (void)updateTimer:(NSTimer *)timer {
currentTime -= 10 ;
[self populateLabelwithTime:currentTime];
}
- (void)populateLabelwithTime:(int)milliseconds {
int seconds = milliseconds/1000;
int minutes = seconds/60;
int hours = minutes/60;
seconds -= minutes * 60;
minutes -= hours * 60;
NSString * result1 = [NSString stringWithFormat:@"%@%02dh:%02dm:%02ds:%02dms", (milliseconds<[email protected]"-":@""), hours, minutes, seconds,milliseconds%1000];
result.text = result1;
}
+1。がんばり続ける。 –
Haiそれはいくつかの変更でうまく動作します...私は時間を表示しているスクロールビューを持っています..私はスクロールビューをドラッグして時間は(バックグラウンドでも)計算されていない...何をしなければならない。 ..? – SriKanth
このコードを追加すると、スクロール中にタイマーが有効になります ........................................ .......................................... - (IBAction)start { タイマー= [NSTimer scheduledTimerWithTimeInterval:.01ターゲット:セルフセレクタ:@セレクタ(updateTimer :) userInfo:nil repeat:YES]; [[NSRunLoop currentRunLoop] addTimer:タイマーforMode:NSRunLoopCommonModes]; } –