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

113

Comment puis-je empêcher le verrouillage de l'écran uniquement lors de l'utilisation de la navigation?

Waze a la possibilité de le faire, comment puis-je le faire dans mon application?

alvarogalia
la source

Réponses:

241

Utilisez ceci:

Objectif c:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

Swift (héritage):

UIApplication.sharedApplication().idleTimerDisabled = true

Swift 3 et supérieur:

UIApplication.shared.isIdleTimerDisabled = true

Assurez-vous d'importer UIKit.

Voici le lien vers la documentation sur apple.developer.com.

atwalsh
la source
4
Swift devrait êtreUIApplication.sharedApplication().idleTimerDisabled = true
Doug
3
Swift 3:UIApplication.shared.idleTimerDisabled = true
funkenstrahlen
2
Il a changé enUIApplication.shared.isIdleTimerDisabled = true
Lucas Farah
1
où ajouter cette ligne? Je n'ai pas AppDelegate.swift car j'utilise react-native
Pradnyanand Milind Pohare
@PradnyanandMilindPohare, vous pouvez l'ajouter où vous voulez, assurez-vous simplement que cette ligne est exécutée
Mellao
20

Pour Swift 3.0, voici deux options en fonction de l'endroit où vous souhaitez appeler le code:

Dans AppDelegate.swift:

application.idleTimerDisabled = true

En dehors de AppDelegate.swift:

UIApplication.shared().isIdleTimerDisabled = true

Crashalot
la source
2
En dehors du code AppDelegate.swift devrait être comme:UIApplication.shared.isIdleTimerDisabled = false
DevStarlight
13

Swift 4

dans le fichier AppDelegate.swift, ajoutez la ligne suivante à l'intérieur de la fonction d' application :

    application.isIdleTimerDisabled = true
kavehmb
la source
6

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

La idleTimerDisabledsoultion est correcte mais vous devez vous rappeler de la régler par la falsesuite.

nsmeme
la source
0

Si vous avez un cas plus avancé, vous pouvez utiliser notre petit projet: ScreenSleepManager ou s'il s'agit simplement de ViewControllers particuliers - utilisez Insomnia comme indiqué précédemment. Le manuel traitant idleTimerDisabledme causait presque toujours des problèmes (comme oublier de réinitialiser sur false ou gérer plusieurs modules (imbriqués) en essayant de le définir).

Diable
la source