6
votes

Où est-ce qu'un uialertview vivent sans avoir rejeté

Est-ce que quelqu'un connaît-il dans quelle sous-Sous-StatView un actif uialertview est situé ou comment trouver le fil dans lequel il fonctionne?


0 commentaires

3 Réponses :


4
votes

L'UIALERTVIVENCE active vit dans une fenêtre séparée (_UIALERTEROVAYWINDOW). Utilisez .windows propriété pour le trouver.

L'interface utilisateur complète fonctionne dans le fil principal.


0 commentaires

18
votes

Si vous videz le contenu de la Propriété Windows et toutes les sous-espions de toutes vues Vous pouvez voir que l'UIALERTERVIEW est dans une fenêtre distincte qui superpose la fenêtre principale. Ici, j'ai une barre NAV avec une ViewController et une vue de table (j'ai supprimé ses sous-espions car ils ne sont pas pertinents).

void dumpView(UIView* aView, NSString* indent) {
    if (aView) {
        NSLog(@"%@%@", indent, aView);      // dump this view

        if (aView.subviews.count > 0) {
            NSString* subIndent = [[NSString alloc] initWithFormat:@"%@%@", 
                           indent, ([indent length]/2)%2==0 ? @"| " : @": "];
            for (UIView* aSubview in aView.subviews) dumpView( aSubview, subIndent );
            [subIndent release];
        }
    }
}

void dumpWindows() {
    for (UIWindow* window in [UIApplication sharedApplication].windows) {
        dumpView(window, @"dumpView: ");
    }   
}


4 commentaires

Merci, je vais jeter un coup d'oeil. BTW, comment avez-vous produit la belle décharge formatée?


Cela fait l'affaire. Trouvé l'idée dans Stackoverflow.com/questions/2528929/... - (bool) alertisactive {for (uiwindow * fenêtre dans [uiapplication SharedApplication] .windows) {if ([[[fenêtre.subviews]> 0) Si ([[Fenêtre. SUBVIEWS ObjecteAindex: 0] IskindofClass: [CLASSE UIALERTERTVIEW]]) Retournez Oui; } retour non; }


@ProgmR + 1 belle sniplet. J'ai quand même une question. Est-il possible de trouver dans quelle sousview est la vue d'alerte des services de localisateurs? Votre sniplet fonctionne pour toutes les visions Uialertviettes jusqu'à présent, sauf l'alerte des services de localisations. Toute aide s'il vous plaît?


+ 1 joli extrait, @progrmr. Merci d'avoir partagé.



1
votes

Du problème que vous décrivez avec Windows et Timing, on dirait que vous devez implémenter AlertView: Diddismisswithbuttonindex: . Vous pouvez déclencher votre code de suivi de cette méthode.

EDIT: Si cela n'a pas fonctionné, j'essaierais de faire un retard pour exécuter le trucs FB après un retard lorsque la fenêtre est vraiment garantie.


1 commentaires

Bonne idée, mais j'ai essayé cela et le problème persiste, même avec animé = non.