0

重複の可能性:
Xcode: タイマーがティックごとに 2 秒カウントするのはなぜですか?

私のアプリには、12:00 から 0:00 までのタイマーがありますが、次のようにすべてのティックで 2 秒をカウントします。

11.58
11.56
11.54
11.52 and so on..

これは、スタート ボタン コードのコードです。

tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
timer= [NSTimer scheduledTimerWithTimeInterval:1.0
                target:self
                selector:@selector(tidklick)
                userInfo:nil
                repeats:YES];

これはtidklickメソッドです:

-(void) tidklick
{
    tiden -= 1;
    sekunder = tiden % 60;
    minuter= (tiden - sekunder) / 60;
    tid.text=[NSString stringWithFormat:@"%d:%.2d",minuter,sekunder];
}

これは冒頭のコードです..

int tiden=720;
int sekunder;
int minuter;

また、特定のボタンを押すと、次のようになります。i++;

ボタンを押すたびiに追加されるようです....2

なにが問題ですか?:S 私のコードではなく、Xcode のようなものですか?

編集:最後にタイマーを停止するボタンを押すと(タイマー無効化)、通常どおりカウントされることに気付きました...つまり、一度に1秒カウントされます!

前もって感謝します!

4

3 に答える 3

0

質問の 2 番目の部分では、ボタンを押したとき: ボタンのセレクターが 2 回呼び出されていないことを確認しましたか? たとえば、ボタンが押されたときと、持ち上げられたときです。

于 2012-04-25T17:48:06.560 に答える
0

「ボタンを押す」と言うとき、ボタンを押すコードは何ですか? ボタンの「ヒット」で発生するイベントがいくつかあります (最も顕著なのはボタンのダウンとアップのイベントです)。適切に処理しないiと、1 回の「ヒット」で複数回インクリメントされる可能性があります。

これは、タイマーが 1 つではなく 2 つ減少している理由でもあります。開始ボタンを「押す」と、1 つではなく 2 つのタイマーが起動し、タイマーごとに 1 秒ずつ減少します。

于 2012-04-25T17:49:07.653 に答える
0

時間のカウントを改善するには、NSDate メソッドを使用してみてください: [NSDate date] を開始値に、[NSDate timeIntervalSinceDate:startTime] を使用して開始からの時間シフトを取得します。

タイマーの発火間隔は1 秒です。

于 2012-04-25T17:56:22.373 に答える