IOS: Как вы предотвращаете выпадение экрана сразу при повторном включении idleTimer - PullRequest
6 голосов
/ 20 октября 2011

Я работаю над игрой для iOS, в которой в основном используется акселерометр. Предыдущие программисты установили idleTimerDisabled = YES при запуске и оставили это так. Я недавно внес изменение, так что таймер простоя отключается только во время игры, и снова включается, когда уровень заканчивается.

Проблема в том, что если время воспроизведения уровня больше, чем пользовательская настройка idleTimer, экран станет серым, как только я установлю idleTimerDisabled = NO. Есть ли способ сбросить таймер при повторном включении, чтобы приращение времени происходило до того, как idleTimer затемнит экран?

1 Ответ

7 голосов
/ 20 октября 2011

Отключите таймер простоя на таймере, используя что-то вроде этого.

[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];
});
...