2012-04-21 33 views
6

私はQuizアプリケーションを開発しています。私はタイマーを75:00.00(mm:ss.SS)に開始し、1ミリ秒を減らして00:00.00(mm:ss.SS)にしたいと思ってカウントダウンタイマーが必要です。私はタイムアップの警告を表示したい!時間が00:00.00(mm:ssSS)に達したとき。NSTimer秒/ミリ秒単位で時間を短縮します。

私はタイマーを減少させるためのコード次のリンク

Stopwatch using NSTimer incorrectly includes paused time in display

答えて

13

ここでは、問題を簡単に解決する方法を示します。詳細な説明のための

宣言

@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

+1。がんばり続ける。 –

+0

Haiそれはいくつかの変更でうまく動作します...私は時間を表示しているスクロールビューを持っています..私はスクロールビューをドラッグして時間は(バックグラウンドでも)計算されていない...何をしなければならない。 ..? – SriKanth

+1

このコードを追加すると、スクロール中にタイマーが有効になります ........................................ .......................................... - (IBAction)start { タイマー= [NSTimer scheduledTimerWithTimeInterval:.01ターゲット:セルフセレクタ:@セレクタ(updateTimer :) userInfo:nil repeat:YES]; [[NSRunLoop currentRunLoop] addTimer:タイマーforMode:NSRunLoopCommonModes]; } –

3

使用下に次のことで時間を表示しています。

double dblRemainingTime=60; //1 minute 

if(dblRemainingTime >0) 
{ 
    dblRemainingTime -= 1; 
    int hours,minutes, seconds; 
    hours = dblRemainingTime/3600; 
    minutes = (dblRemainingTime - (hours*3600))/60; 
    seconds = fmod(dblRemainingTime, 60); 
    [lblRemainingTime setText:[NSString stringWithFormat:@"%02d:%02d",minutes, seconds]]; 
} 
else 
     alert('Time up buddy'); 
関連する問題