2010-08-13 3 views
3

Dans l'application sur laquelle je travaille, j'ai des feuilles d'action et des vues d'alerte que je voudrais ignorer lorsque l'application passe à l'état inactif/d'arrière-plan. J'utilise UIApplicationWillResignActiveNotification au lieu de UIApplicationDidEnterBackgroundNotification car je veux que le code soit compatible avec iOS3.2.ignorer UIActionSheet lorsque l'application passe en arrière-plan sur iOS4

-(void)applicationWillResignActive:(Notification *)notification{ 
    if (self.actionSheet && self.actionSheet.visible){ 
     NSLog(@" actionSheet is Visible"); 
     [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO]; 
    } 
} 

Test ce simulateur (iphone 3.2, iOS4), avec le visible, actionSheet j'appuie sur le bouton d'accueil, mais je ne suis pas le message "actionSheet est visible". Pourtant quand je rouvre l'application et la rejette encore avec le bouton d'accueil, je reçois le message "actionSheet is Visible".

Ceci suggère que la propriété visible de la feuille d'action n'est pas définie pour la première fois. Pourrait-il y avoir un retard dans la propriété en cours de définition? En fait je mets un message dans la méthode qui affiche l'action

[self.actionSheet showInView:self.parentViewController.tabBarController.view]; 
if (self.actionSheet.Visible) NsLog(@" action Sheet visible"); 

même ici je ne reçois pas le message. Où/quand la propriété visible est-elle définie? Est-ce que je fais quelque chose de fondamentalement faux en essayant de rejeter la feuille d'action? J'ai vu des solutions similaires très bonnes et détaillées sur le rejet de alertViews dans SO ... mais ils ne semblent pas couvrir cette question. Toute aide sera très appréciée. Pourquoi devriez-vous même vérifier s'il est visible?

+0

Pourquoi vous soucier de rejeter la feuille d'action sur iOS 3.2? L'application sera terminée lorsque l'utilisateur quitte, donc cela n'a pas d'importance. Vous pouvez aussi utiliser 'UIApplicationWillResignActiveNotification'. –

+0

Salut, je suis d'accord, je n'ai pas besoin de faire quoi que ce soit avec l'actionSheet dans iOS3.2. mais mon problème est dans iOS4. Désolé je devrais avoir écrit iPhone3G dans mon message ci-dessus au lieu de l'iPhone 3.2. – prd

Répondre

2

En fait, pourquoi auriez-vous même besoin de le vérifier contre zéro? Vous pouvez simplement mettre [self.actionSheet dismissWithClickedButtonIndex:0 animated:NO];, et cela devrait fonctionner correctement, comme si la feuille d'action existe, vous la rejetterez, et si ce n'est pas le cas, vous appellerez simplement la méthode sur zéro, ce qui ne fait rien.

+0

En fait, j'ai vu l'exemple de code d'Apple en vérifiant d'abord si alertView est visible, puis en appelant la méthode de rejet. – prd

Questions connexes