Pregunta

Actualmente tengo una aplicación muy simple para la cual la única interacción es sacudir el iPhone. Sin embargo, con el tiempo, la pantalla se atenúa y se bloquea automáticamente, ya que el iPhone no recibe ningún evento táctil. Me preguntaba si hay una manera de restablecer el tiempo de espera de bloqueo automático cuando se agita.

Sé que para desactivar el bloqueo automático por completo, haría esto:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

pero realmente no quiero deshabilitarlo por completo; si el iPhone no se usa legítimamente, debería bloquearse automáticamente como se esperaba.

Gracias por su ayuda.

¿Fue útil?

Solución

Puede alternar el valor de [UIApplication sharedApplication] .idleTimerDisabled según el valor de su propio NSTimer o gesto de comportamiento (sacudir el teléfono). Se puede establecer en YES / NO varias veces en su aplicación.

Otros consejos

Aquí está el código que uso en mi aplicación. Un poco de historia: mi aplicación tiene un servidor web incorporado para que los usuarios puedan acceder a los datos desde un navegador a través de WIFI y cada vez que llega una solicitud en el servidor, extiendo el temporizador de bloqueo (durante un mínimo de 2 minutos en este caso; aún obtiene la cantidad de tiempo predeterminada agregada una vez que se vuelve a habilitar).

// 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];
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top