6
votes

UisplitViewController n'atortate pas

J'ai récemment rencontré un problème. Mon application iPad empêche la rotation automatique de l'iPad. Mon application Charge un UisplitView avec les deux contrôleurs d'affichage renvoyant oui pour DutressAtOtaTeTointerFaceOrientation :. J'ai configuré mon info.plist pour inclure la touche "Orientations d'interface pris en charge" avec les quatre orientations. Lorsque j'exécute l'application, toutefois, la rotation du périphérique ne fait pas pivoter la SplitView (même si je reçois la réception d'UideviceSorientationDidchangenotification). De plus, lorsque je quitte mon application dans une orientation différente de son démarrage dans l'écran d'accueil iPad n'atortate pas à la vue correcte jusqu'à ce que je le tire à nouveau sans mon application en cours ... Toutes les idées seraient très appréciées ... .


0 commentaires

6 Réponses :


0
votes

Vous avez dit que votre premier problème est que l'UisplitView vous empêche d'avoir une autocartage. Essayez d'utiliser une sous-classe de SplitView au lieu de cela que EnBales Autorotation:

@implementation SplitViewControllerRotating
- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    NSLog(@"SplitViewControllerRotating shouldAutorotate");
    return YES;
}
@end


2 commentaires

Je lui ai donné un coup ... ça n'a pas fonctionné ... N'est-ce pas le but de l'UisplitView d'autorotater quand même?


Est-ce que quelqu'un connaît une solution sur iOS 9? Les réponses recherchées ci-dessus sont obsolètes.



0
votes

J'ai eu le même problème en ce moment. La raison était que j'avais accidentellement ajouté une autre page à la fenêtre en plus de la vue UisplitViewController. Supprimer la vue supplémentaire rendue son travail.


0 commentaires

1
votes

est votre UisplitViewController définie comme contrôleur de vue racine? Sinon, cela peut être la cause de votre problème. J'avais un problème similaire - la barre d'état tournerait mais mes vues de détail et de maîtrise resteraient en place. J'ai réarrangé les vues de manière à ce que l'UisplitViewController était la racine, puis mon "menu principal" a été présenté comme un contrôleur de visualisation modal sur la vue Split et le problème de rotation disparaît.

Selon le Guide de programmation iPad < / a>, "La vue du contrôleur Split View doit toujours être installée en tant que vue racine de la fenêtre de votre application."

J'espère que cela aide.


0 commentaires

8
votes

UISPLITVIEWCONTROLLER est l'une des sous-classes de contrôleur de vue la plus tempéramentielle que j'ai à utiliser. Pour qu'il fonctionne "parfaitement", il est doit être exister comme une seule vue racine de la fenêtre de votre application. Vous pouvez, cependant, contourner cela avec un peu de tromperie - dans mon cas, j'avais besoin d'un uitabbarcontroller avec au moins deux uisplitViewController s comme contrôleurs de vue - mais vous Prendre soin des cas étranges impliquant une rotation et UisplitViewControllerdelegate Callbacks ne tiers pas.

Voici dans l'espoir que Apple fait UisplitViewController plus compatible avec les autres uikit composants à l'avenir ...


3 commentaires

Vous pouvez vous en contourner avec de la tromperie que vous dites ... De quel scandale? Vous taquinez!


Ce qu'il est tombé en train de transférer manuellement les méthodes de rotation appropriées. Enregistrement d'un tas de choses pour voir quelles méthodes étaient et nous ne sommes pas appelés. Ensuite, je viens de compenser dans la sous-classe de contrôleur d'affichage de la racine en veillant à ce que les contrôleurs de vue des enfants ont obtenu les bonnes méthodes tirées, ont redirigé leurs points de vue, etc.


J'ai le même problème dès maintenant d'avoir mon SplitViewController, qui sont des onglets sous une tabbarcontroller, agissent erratique, il est donc heureux de savoir que ce n'est pas seulement moi! Merci pour ce confort au moins!



5
votes

J'ai couru dans ce même problème avec deux subordonnées UinavigationControlers. Dans mon cas, la rotation a commencé à fonctionner une fois que je remplace DoTutoroTetaTeTerrageFaceOrientation: dans le contrôleur gauche pour toujours retourner "oui".


1 commentaires

Le MasterView et le DétachantView doivent prendre en charge OUI pour toute orientation que vous essayez de faire pivoter. Si l'un ou l'autre ne renvoie pas oui, il ne tournera pas. J'ai manqué cette subtil détail, mon masterview uniquement pris en charge portrait. J'espère que ceci aide quelqu'un d'autre.



2
votes

J'ai trouvé que cela fonctionne bien - à condition que les deux enfants du UisplitViewController code> implémentent le devoirOutoroTetOteTointFaceOrientation code>:

Si vous avez quelque chose comme: P>

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
    return YES;
}


0 commentaires