4 votes

Comment mettre à jour l'écran avant l'applicationDidBecomeActive ?

J'ai besoin de cacher quelque chose à l'écran lorsque l'utilisateur a activé l'application en la faisant passer au premier plan.

J'ai essayé d'insérer mon code dans l'applicationDidBecomeActive ou l'applicationWillEnterForeground et bien qu'il s'exécute correctement, l'ancien écran avec le texte que je veux cacher s'affiche momentanément.

Comment puis-je masquer le champ avant que l'écran ne soit redessiné ?

Merci

iphaaw

2voto

Nick Weaver Points 30418

Je pense que le problème est que iOS va capturer une capture d'écran de votre application au moment où elle passe en arrière-plan, donc l'animation va fonctionner en un instant.

À mon avis, le seul moyen d'y parvenir est de masquer ou de couvrir votre vue au moment où l'application passe en arrière-plan.

2voto

Alan Zeino Points 3380

Écrivez du code dans applicationWillResignActive: pour "cacher" ce que vous avez besoin de cacher.

0voto

elitalon Points 2894

J'ai été confronté à une situation similaire mais, au lieu de cacher, je voulais afficher un écran de code de blocage pour accorder l'accès. Quoi qu'il en soit, je pense que la solution s'applique également à vos besoins.

Je mets souvent en œuvre un contrôleur de vue de base personnalisé dans mes applications iOS. Ainsi, au lieu de traiter avec applicationDidBecomeActive: o applicationWillResignActive: J'ai configuré ce contrôleur de vue pour écouter les notifications équivalentes :

@interface BaseViewController : UIViewController

- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification;

- (void)grantAccessWithNotification:(NSNotification *)notification;

@end

@implementation BaseViewController

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];

  [self addNotificationHandler:@selector(grantAccessWithNotification:)
               forNotification:UIApplicationDidBecomeActiveNotification];

  [self addNotificationHandler:@selector(prepareForGrantingAccessWithNotification:)
               forNotification:UIApplicationWillResignActiveNotification];
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)prepareForGrantingAccessWithNotification:(NSNotification *)notification {
  // Hide your views here
  myCustomView.alpha = 0;

  // Or in my case, hide everything on the screen
  self.view.alpha = 0;
  self.navigationController.navigationBar.alpha = 0;
}

- (void)grantAccessWithNotification:(NSNotification *)notification {
  // This is only necessary in my case
  [self presentBlockCodeScreen];
  self.view.alpha = 1;
  self.navigationController.navigationBar.alpha = 1;
  ...
}

@end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X