Quelle est la meilleure façon de détecter lorsque l'application est entré dans l'arrière-plan de mon point de vue?
J'ai vue contrôleur qui utilise un NSTimer
d'exécuter du code.
Quelle est la meilleure façon de détecter le moment où l'application va à l'arrière-plan de sorte que je peux mettre en pause le chronomètre?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez avoir n'importe quelle classe intéressés à quand l'application passe en arrière-plan recevoir des notifications. C'est une bonne alternative à couplage de ces classes avec l'AppDelegate.
Lors de l'initialisation de ces catégories:
De répondre aux notifications
@selector
, c'est à dire le remplacement de@selector(appWillResignActive)
avec@selector(appWillResignActive:)
(et même pour@selector(appWillTerminate:)
).Sur vos applications AppDelegate la
(void)applicationDidEnterBackground:(UIApplication *)application
méthode sera appelée par iOS. Vous pouvez arrêter votre minuterie là.Pour ceux qui cherchent à le faire dans Swift:
Sur
init
:Sur
deinit
:De répondre à la notification:
Apple nous encourage à éviter la distribution dynamique et Objective-C sélecteurs dans la mesure du possible Swift, mais c'est encore le moyen le plus commode pour le faire.
Dans swift 4.1:
- Je utiliser la fermeture de la version:
La
addObserver
méthode retourne un objet opaque qui doit être retiré à un certain point.- (void)applicationWillResignActive:(UIApplication *)application
sur votre délégué d'application. Vous pouvez également vous inscrire pour leUIApplicationWillResignActiveNotification
notification sur d'autres objets.Vous n'avez pas nécessairement besoin d'interrompre le compte à rebours, si. Si vous ne faites rien, l'application va se mettre à dormir de toute façon et de ne pas exécuter le code. Sans doute votre minuterie se déclenche lorsque vous devenez actif à nouveau (si vous le souhaitez). Si vous avez besoin de faire quelque chose de spécial il y a " ne deviennent actives délégué des méthodes et des notifications vous pouvez vous inscrire en tant que bien.
seulement une note de côté:
Si vous vous inscrivez à un contrôleur de Un pour être averti va de fond, attention qu'il sera appelé, même si vous (par exemple..) appuyez une deuxième manette, B et Vous êtes en affichage B:
Si ce comportement n'est pas correct, c'est mieux pour vous inscrire/désinscrire en
didAppear/WillDisappear.
Swift 4: