Вопрос

В настоящее время у меня есть очень простое приложение, единственное взаимодействие которого - встряхивание iPhone. Однако в конечном итоге экран тускнеет и автоматически блокируется, поскольку iPhone не получает сенсорных событий. Мне было интересно, если есть способ сбросить время автоблокировки при встряхивании?

Я знаю, что, чтобы полностью отключить автоматическую блокировку, я бы сделал это:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

но я не хочу полностью его отключать; если iPhone на законных основаниях не используется, он должен автоматически блокироваться, как и ожидалось.

Спасибо за вашу помощь.

Это было полезно?

Решение

Вы можете переключать значение [UIApplication sharedApplication] .idleTimerDisabled в зависимости от значения вашего собственного NSTimer или поведенческого жеста (встряхивая телефон). В вашем приложении может быть установлено значение YES / NO несколько раз.

Другие советы

Вот код, который я использую в своем приложении. Немного предыстории: мое приложение имеет встроенный веб-сервер, так что пользователи могут получать доступ к данным из браузера через WIFI, и каждый раз, когда на сервер поступает запрос, я увеличиваю таймер блокировки (в этом случае минимум на 2 минуты; вы по-прежнему получаете количество времени по умолчанию, добавленное после повторного включения).

// disable idle timer for a fixed amount of time.
- (void) extendIdleTimerTimeout
{
    // cancel previous scheduled messages to turn idle timer back on
    [NSObject cancelPreviousPerformRequestsWithTarget:self
        selector:@selector(reenableIdleTimer)
        object:nil];
    // disable idle timer
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES];

    // re-enable the timer on after specified delay.
    [self performSelector:@selector(reenableIdleTimer) withObject:nil afterDelay: 60 * 2];

}

- (void) reenableIdleTimer
{
sharedApplication].idleTimerDisabled );
    [NSObject cancelPreviousPerformRequestsWithTarget:self
        selector:@selector(reenableIdleTimer)
        object:nil];
    // disable idle timer
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top