Question

Je dispose actuellement d'une application très simple pour laquelle la seule interaction est de secouer l'iPhone. Cependant, l'écran s'assombrit et se verrouille automatiquement puisque l'iPhone ne reçoit aucun événement tactile. Je me demandais s’il existait un moyen de réinitialiser le délai de verrouillage automatique une fois secoué?

Je sais que pour désactiver complètement le verrouillage automatique, je procéderais ainsi:

[[ UIApplication sharedApplication ] setIdleTimerDisabled: YES ]

mais je ne veux pas vraiment le désactiver complètement; si l'iPhone n'est légitimement pas utilisé, il devrait se verrouiller automatiquement comme prévu

Merci de votre aide.

Était-ce utile?

La solution

Vous pouvez modifier la valeur de [UIApplication sharedApplication] .idleTimerDisabled en fonction de la valeur de votre propre geste NSTimer ou comportemental (secouer le téléphone). Il peut être défini sur OUI / NON à plusieurs reprises dans votre application.

Autres conseils

Voici le code que j'utilise dans mon application. Un peu d’arrière-plan: mon application dispose d’un serveur Web intégré qui permet aux utilisateurs d’accéder aux données d’un navigateur via WIFI et chaque fois qu’une demande arrive sur le serveur, j’étends le verrouillage du minuteur (pour un minimum de 2 minutes dans ce cas; la durée par défaut est toujours ajoutée une fois réactivée).

// 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];
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top