web-dev-qa-db-fra.com

Comment empêcher le verrouillage de l'écran sur mon application avec Swift on IOS

Comment puis-je empêcher le verrouillage de l'écran uniquement lorsque vous utilisez Navigation? Waze a la possibilité de le faire, comment puis-je le faire dans mon application?

97
alvarogalia

Utilisez ceci:

Objective-C:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Swift (legs):

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3/4:

UIApplication.shared.isIdleTimerDisabled = true

Assurez-vous d'importer UIKit.

Ici est le lien vers la documentation de Apple.developer.com.

208
atwalsh

Pour Swift 3.0, deux options sont disponibles selon l'endroit où vous souhaitez appeler le code:

Inside AppDelegate.Swift:

application.idleTimerDisabled = true

En dehors de AppDelegate.Swift:

UIApplication.shared().isIdleTimerDisabled = true

17
Crashalot

Swift 4

dans le fichier AppDelegate.Swift, ajoutez la ligne suivante dans la fonction application:

    application.isIdleTimerDisabled = true
10
kavehmb

Vous pouvez utiliser ma petite bibliothèque Insomnia (Swift 3, iOS 9+) - une autre fonctionnalité intéressante est que vous pouvez empêcher de dormir uniquement lors de la charge.

La idleTimerDisabled soultion est correcte, mais vous devez vous rappeler de la définir sur false ultérieurement.

4
nsmeme

Si vous avez un cas plus avancé, vous pouvez utiliser notre petit projet: ScreenSleepManager ou s'il s'agit simplement de ViewControllers - use - Insomnie comme indiqué précédemment. Le traitement manuel de idleTimerDisabled m'a presque toujours causé des problèmes (par exemple, j'ai oublié de redéfinir la valeur sur false ou de gérer plusieurs modules (imbriqués) essayant de le définir).

0
Dev_IL