9
votes

WAIT_FENCES: Échec de la réponse à la réponse: 10004003 Erreur - UIALERT sans Uitextfield présent

Je travaille sur une application dans laquelle un UIALert apparaît la première fois que l'utilisateur commence à l'utiliser pour demander s'il veut utiliser leur position actuelle. Cela se produit dans le contrôleur principal. Cependant, j'obtiens l'erreur suivante lors de l'utilisation de l'UIALERT:

@interface MainController : UIViewController 
<CLLocationManagerDelegate,
 MKReverseGeocoderDelegate, UIAlertViewDelegate>


0 commentaires

5 Réponses :


0
votes

Essayez d'afficher l'UIALERT dans -ViewDidIDAppear: (bool) animé. -ViewDidLoadLoad est appelé lorsque votre vue est chargée, mais avant qu'il ne soit à l'écran.


2 commentaires

Alan, j'ai essayé ceci..oulé le code à la fonction ViewDidAppear et reçois toujours le même message d'erreur.


Je pense que cette erreur se produit car vous montrez l'UIALERTVIEW avant que les animations de navigation ne soient effectuées. Appelez-vous [Super ViewDididAppear: Animated] en premier?



8
votes

J'ai résolu ce problème en ajoutant un léger délai à l'UIALERT: le ci-dessous se trouve dans ma méthode ViewDidLoad (elle fonctionne également bien dans ViewDididAppear ): xxx

Pour une raison quelconque, le retard a fait l'affaire. J'ai ensuite appelé une autre méthode (je le renommerai bien sûr.): xxx


0 commentaires

1
votes

Appelez toujours [super viewDidLoad]; avant de faire autre chose. Cela explique également pourquoi le retard fonctionne.

J'espère que j'ai raison. :)


0 commentaires

17
votes

La raison de ce wait_fences: Impossible de recevoir la réponse: code> peut également être que vous essayez d'afficher une alerte sans être sur le maintenir code> (qui est le fil de l'interface graphique ).

Expédition au thread de l'interface graphique aide: P>

dispatch_async(dispatch_get_main_queue(), ^{ 
  [mainAlert show];
});


1 commentaires

Comment trouvez-vous qu'il n'est pas sur le fil principal? ViewDidLoad est toujours appelé sur le fil principal.



0
votes

J'ai eu un problème similaire. J'avais ajouté un observateur dans la vue ViewDidLoad pour une notification d'accessibilité, qui devait être affichée avant la fin de la vieilledididappear.

de sorte que la vue de la vue tentative d'afficher une uialertview avant sa propre vue ait été complètement dessinée.

J'ai déplacé l'ajout d'observateurs à la vue ViewDidAppear et a commencé le startnotifier de la portée accessible dans la vue ViewDidAppear. De plus, l'appel à [Super ViewDididappear] a été manqué du code. Ces deux problèmes sont corrigés, l'application est devenue bien fonctionner.

Si vous obtenez ce wait_fences: Échec de la réception de la réponse: 10004003 Erreur Une fois, vous ne pourrez peut-être présenter aucune vue modale dans l'application. C'était le problème que j'avais dans mon application. Parfois, lorsque vous essayez de présenter une vue de mode modale, l'application irait dans une boucle infinie.

Comme Alan dit, rappelez-vous toujours de "essayer d'afficher l'UIALERT dans -ViewDidAppappear: (bool) animée. -ViewDidLoDload est appelé lorsque votre vue est chargée, mais avant qu'il ne soit à l'écran."


0 commentaires