6

私は主に加速度計入力を使用するiOSゲームに取り組んでいます。以前のプログラマーは、起動時にidleTimerDisabled = YESを設定し、そのままにしました。最近、アイドルタイマーがゲームプレイ中にのみ無効になり、レベルが終了すると再び有効になるように変更しました。

問題は、レベルの再生時間がユーザーのidleTimer設定よりも長い場合、idleTimerDisabled=NOを設定した瞬間に画面がグレー表示されることです。再度有効にしたときにタイマーをリセットして、idleTimerが画面を暗くする前にフルタイムの増分が発生するようにする方法はありますか?

4

1 に答える 1

7

このようなものを使用して、タイマーのアイドルタイマーを無効にします。

[self performSelector:@selector(enableIdleTimer) withObject:nil afterDelay:4];

- (void)enableIdleTimer { 

    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}

あるいは、これはよりモダンでシンプルなアプローチです。

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(4 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
});
于 2011-10-20T19:26:54.907 に答える