pourquoi l'iPhone 5 ne tourne pas à mis à l'envers
j'ai ajouté de nouvelles méthodes pour mon code comme décrit au pommes iOS 6 de documents mais sur l'iPhone 5, l'Application ne permet pas de faire tourner à l'envers. Seul le paysage Façons.
Voici mon Code à partir de la rootViewController:
- (NSUInteger)supportedInterfaceOrientations{
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
return (UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskLandscapeLeft |
UIInterfaceOrientationMaskLandscapeRight | UIInterfaceOrientationMaskPortraitUpsideDown);
}
- (BOOL)shouldAutorotate{
NSLog(@">>> Entering %s <<<", __PRETTY_FUNCTION__);
return YES;
}
j'ai essayé aussi "UIInterfaceOrientationMaskAll" mais aucun changement. L'Étrange est, mon iPhone 4 avec iOS6 n'rotation o à l'envers avec le même code.
Des Idées?
- Avez-vous vérifier la rotation physique de l'interrupteur? (just kidding)
- Regardez ici .. stackoverflow.com/a/33411646/294884
Vous devez vous connecter pour publier un commentaire.
IOS 6 utilise Orientation par défaut
UIInterfaceOrientationMaskAll
pour iPad etUIInterfaceOrientationMaskAllButUpsideDown
pour iPhone. Si vous voulez que votre ViewControllers sur l'iPhone pour faire pivoter dans TOUTES les orientations, y compris mis à l'envers, vous devez ajouter l'iOS 6 méthode:à tous les contrôleurs de vue. Si vous avez fait cela et il ne fonctionne pas alors je vous parie que votre utilisation d'un TabViewController ou NavigationController où certains points de vue ne sont PAS de retour cette. Tous les ViewControllers doit retourner ce pour n'IMPORTE quel d'entre eux pour le soutenir.
Alternativement, vous pouvez ajouter une Catégorie à la UITabViewController ou NavigationController classe qui est votre rootViewController et de redéfinir cette méthode. Vous n'avez que de la sorte:
Aussi ce sont actuellement les approches recommandées maintenant en cours de discussion dans les Forums des Développeurs Apple avec Apple personnel de dire plus tôt documentation découragé sous le classement de UINavigationController est pas à jour, et que de iOS 6, il est ok pour le faire.
UINavigationController
utilisé par la plume. Une alternative à l'utilisation d'une catégorie serait de faire une sous-classe et de définir la plume d'utiliser cette sous-classe.@interface
n'est plus nécessaire, seul le@implementation
.Grâce à Falaise Ribaudo vraiment aider votre réponse pour UITabbarController de projet basée sur, mais dans mon cas, je n'en suis qu'à l'aide de UINavigationController donc j'ai modifié votre réponse pour UINavigationController categeory.
@interface
, juste avoir l'@implementation
œuvres.Pardonner le niveau de verbosité, mais je pense que votre réponse est ci-dessous.
J'ai eu le même problème, mais il se passait sur tous les IOS 6 appareils, y compris mon iphone 4. La lecture de votre question répondu à la mienne. J'avais enlevé cette il y a des siècles, car il n'a rien fait:
et mon code fonctionne parfaitement en avant ios versions. Il semble que cela est devenu manditory dans ios 6. Mais seulement pour les mis à l'envers. Les autres orientations fonctionnent très bien.
Donc, merci à vous.
Retour à votre problème. Avez-vous examiné votre projet cible pour voir si tous les "pris en charge Interface Orientations" sont gris foncé? Je me demandais si upside down est gris clair, (c'est à dire, non cochée). J'ai trouvé dans un test rapide qu'avant ios communiqués de celles-ci sont ignorées trop. Aussi longtemps que vous le retourner OUI partir shouldAutorotateToInterfaceOrientation il permettra de soutenir les orientations, mais pas dans iOS 6.
Enfin, vous avez mis en œuvre shouldAutorotate, que je n'ai pas dans mon code. Je pense que la valeur par défaut est Oui. Et je pense que cela indique simplement à l'os pour tenter de tourner, mais alors vous devez préciser les orientations de soutien avec shouldAutorotateToInterfaceOrientation. Mais votre extrait ne montre pas que vous avez mis en œuvre shouldAutorotateToInterfaceOrientation. Je suggère la mise en œuvre de ce qu'il raconte l'OS orientations en charge le renvoi d'un simple OUI signifie que vous avez le soutien de tous.
Espère que cette aide.
Par défaut les paramètres de la cible n'est pas l'envers de l'orientation, alors essayez ceci:
Aller à fichier de Projet
sélectionnez votre application cible
sélectionnez "Estival" de l'onglet
vérifier que tous les types d'orientation pressé
Bonne chance 🙂
Si vous prévoyez d'activer ou de désactiver la rotation pour tous les contrôleurs de vue, vous n'avez pas besoin de sous-classe UINavigationController.
Au lieu d'utilisation:
dans votre AppDelegate.
Si vous prévoyez à l'appui de toutes les orientations dans votre application, mais des orientations différentes sur la Vue PARENT Contrôleurs (UINavigationController pile par exemple), vous devez utiliser
de AppDelegate en combinaison avec les méthodes suivantes dans votre PARENT-Vue-Contrôleur.
et
Mais si vous prévoyez d'avoir des différents paramètres d'orientation dans les différents ENFANTS ViewControllers dans la même pile de navigation (comme moi), vous devez vérifier le courant ViewController dans la pile de navigation.
J'ai créé dans mon UINavigationController sous-classe:
Puisque vous ne pouvez pas contrôler plus d'enfants ViewControllers les paramètres de rotation de présenté view controller vous devez en quelque sorte intercepter la vue qu'controller est actuellement dans la pile de navigation. C'est ce que j'ai fait :). Espérons que ça aide !