Domanda

Al momento ho un'app molto semplice per la quale l'unica interazione è scuotere l'iPhone. Tuttavia, alla fine lo schermo si attenua e si blocca automaticamente poiché l'iPhone non riceve eventi touch. Mi chiedevo se c'è un modo per ripristinare il timeout del blocco automatico quando scosso?

So che per disabilitare completamente il blocco automatico farei questo:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

ma non voglio davvero disabilitarlo completamente; se l'iPhone non viene legittimamente utilizzato, dovrebbe bloccarsi automaticamente come previsto.

Grazie per il tuo aiuto.

È stato utile?

Soluzione

È possibile attivare o disattivare il valore di [UIApplication sharedApplication] .idleTimerDisabled in base al valore del proprio NSTimer o gesto comportamentale (scuotendo il telefono). Può essere impostato più volte su YES / NO nella tua applicazione.

Altri suggerimenti

Ecco il codice che uso nella mia app. Un po 'di background: la mia app ha un web server integrato in modo che gli utenti possano accedere ai dati da un browser tramite WIFI e ogni volta che arriva una richiesta nel server, estendo il timer di blocco (per un minimo di 2 minuti in questo caso; ottieni ancora il tempo predefinito aggiunto una volta riattivato).

// 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];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top