GameCenter l'authentification en mode paysage uniquement app jette UIApplicationInvalidInterfaceOrientation
Problème:
Si l'utilisateur n'est pas connecté à GameCenter compte GameCenter l'authentification de vue est lancé en mode portrait (dans ios 5, il y avait une boîte de dialogue modale) pour demander à se connecter. Mais si je désactive le mode Portrait dans xcode (Projet de Résumé) ou dans supportedInterfaceOrientationsForwindow: (comme mon application censé fonctionner en mode paysage UNIQUEMENT) j'obtiens:
Résiliation d'application en raison de uncaught exception 'UIApplicationInvalidInterfaceOrientation', la raison: "a Soutenu les orientations n'a pas d'orientation commun avec l'application, et shouldAutorotate est de retour OUI"
Si j'active Portrait pour ipad/iphone (et/ou commentaire supportedInterfaceOrientationsForwindow:) il fonctionne sans plantage, mais je ne veux pas en mode portrait pour être activé.
- Je sais que vous avez trouvé une solution de contournement, mais cela ressemble à un bug et vous devez le déposer auprès d'Apple à l'adresse bugreporter.apple.com
- C'est un problème connu détaillée dans le iOS 6.0 notes de version sous le Game Center. Cette réponse a l'officiel de la solution de contournement.
Vous devez vous connecter pour publier un commentaire.
Lors de l'écriture de cette question et d'expérimenter avec le code, il semble que j'ai trouvé une solution:
permettre à toutes les orientations dans le résumé du projet et de supprimer l'application:supportedInterfaceOrientationsForwindow.
Ajouter ce code à ViewController:
Maintenant il fonctionne de manière transparente.
Ajouter à délégué d'application:
J'ai trouvé que le problème vient de la Game Center dans mon cas. Lorsque dans le simulateur, je n'ai pas le Game Center initialisé pourtant, ce n'est comme une boîte de connexion de vue, mais en mode portrait. Une fois qu'il atteint ce stade, il se bloque si j'ai refusé l'orientation portrait. Bug étrange dans le système d'exploitation en tant que Game Center devrait prendre le permis orientations seulement pour être en ligne avec notre intention de paysage de l'interface utilisateur.
Je n'ai pas encore la solution, mais je vais poster si je le trouve.
J'ai eu le même problème que vous et je l'ai réparé avec un peu moche, contourner, en gros j'ai une variable globale dans une de mes applications que j'utilise pour choisir ce que l'interface valide les orientations sont. Dans le
De déclarer la variable globale mettez ceci dans votre appDelegate.m fichier :
Pour importer la variable globale d'utilisation :
Vous pouvez ensuite modifier la valeur de l'orientation de l'indicateur et il va vous permettre de courir dans les différents types d'interface. Donc, ce que j'ai fait j'ai commencer par faire le orientationIndicator = 1. Lorsque vous authentifier un lecteur et lancer la connexion view controller définir l'orientation de l'indicateur 2. Lorsque vous fermez la vue (authentifier le joueur), alors vous pouvez le modifier à 1.
C'est répugnant de travail, mais cela a fonctionné pour moi.
Espérons que cette aide!
Attraper l'exception semble très bien fonctionner pour moi:
Dans iOS 6.0, l'exception est levée, mais si vous l'attrapez ensuite le viewController sera toujours montré et GameCenter va se comporter comme prévu dans l'orientation paysage.
Une autre solution est simplement de cible iOS 6.1 et au-dessus, comme Apple a corrigé le bug par cette version.