Trouver UIAlertView sans y faire référence iOS 7
J'ai été en utilisant un extrait de code dans mon projet de réponse ici: UIAlertView sans avoir de référence à elle
Voici le code:
+ (UIAlertView *) getUIAlertViewIfShown {
if ([[[UIApplication sharedApplication] windows] count] == 1) {
return nil;
}
UIWindow *window = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
if ([window.subviews count] > 0) {
UIView *view = [window.subviews objectAtIndex:0];
if ([view isKindOfClass:[UIAlertView class]]) {
return (UIAlertView *) view;
}
}
return nil;
}
Malheureusement sa ne fonctionne pas sous iOS 7 et je ne suis pas en mesure de rejeter une alerte de vue. Lors du débogage, j'ai trouvé que dans la boucle de sa montrant que la vue est de classe UITransitionView
. Assez déroutant parce que je ne pouvais pas trouver n'importe quel rapide de la documentation de cette classe d'affichage.
Des idées comment puis-je résoudre ce problème?
source d'informationauteur Abdullah Umer
Vous devez vous connecter pour publier un commentaire.
Dans iOS7, le
UIAlertView
fenêtre n'apparaît pas dans-[UIApplication windows]
. En fait, laUIAlertView
lui-même n'est jamais ajouté à la fenêtre,-[UIAlertView window]
est toujoursnil
. Au lieu de cela, l'affichage des alertes gère une variété de sans-papiers vues placé dans-[UIApplication keyWindow]
sans référence à l'affichage des alertes.Votre seule option dans iOS7 est de garder une trace de votre alerte vues.
iOS 7 solution
Je ne suis pas sûr si c'est approvable par l'AppStore, mais fonctionne
UPD seule ligne de code:
J'ai été logés à la même question, et dans mon cas, les alertes sont affichées à partir de différents instance de view controller, Comme Brian l'a déjà mentionné que
UIAlertView
fenêtre ne s'affiche pas en[UIApplication windows]
dans iOS7.Afin de garder une trace de cette démarche suivante peut être suivie
Définir un
BOOL
constante dans l'App Délégué -Où " UIAlerView` est présent, vérifier l'instance précédente existence -
Cela pourrait être utile à d'autres personnes, la pensée de ce partage.
Ce ne seront PAS autorisés à publier dans l'Apple Store. Lors de la construction de validation Xcode lèvera une erreur, quelque chose comme: "l'accès des sans-papiers méthode.."
Si vous ne pouvez pas l'utiliser, cependant, ce code fonctionne bien.
Vous pouvez vous inscrire à
UIWindowDidBecomeVisibleNotification
:et dans aWindowBecameVisible vérifier la description de la fenêtre pour
_UIModalItemHostingWin
: