UISplitViewController den portraitMode austreiben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • UISplitViewController den portraitMode austreiben

    Hallo,

    ich möchte gern, dass meine Anwendung nur landscape (home button right) startet, Orientierungswechsel ignoriert, und dass der zentrale UISplitViewController nur im landscape-Modus dargestellt wird. In der .plist sind

    UISupportedInterfaceOrientations
    und
    UIInterfaceOrientation
    jeweils mit
    UIInterfaceOrientationLandscapeRight
    gesetzt.
    Keine weiteren.

    Funktioniert und nix rotiert.

    Meine UISplitViewcontroller-Subklasse antwortet auf
    - (BOOL)shouldAutorotateToInterfaceOrientat...
    mit
    NO.

    Leider startet die Anwendung mit einem auf der Seite liegenden UISplitViewController, der sich im PortraitMode befindet (mit Button, dass das Popover triggert).

    Irgendeine Idee?

    TIA,
    Martin
  • Bevor ich einen neuen Thread aufmache, will ich mich dann erstmal hier dranhängen.

    Ich habe das gleiche Problem (glaub ich *G*). Also ich möchte, dass mein UISplitViewController auch nur im Landscape-Modus funktioniert. Dafür habe im RooViewController (kann jeder leicht nachvollziehen: einfach in XCode ein SplitViewController Projekt anlegen) die shouldAutorotateToInterfaceOrientation mit folgendem Inhalt versehen

    Quellcode

    1. return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);



    Soweit funktioniert das ganze auch … Also zumindest wird kein Portrait-Mode dargestellt. Aber im LandscapeRight-Mode ist der Detail-Controller schwarz. Erst wenn ich das Gerät um 180° drehe (also auf LandscapeLeft), erscheint der DetailViewController


    @planetexpress69: Kannst du deine Zeile einfach mal durch meine obige ersetzen und schauen ob der fehlende DetailViewController nur bei einer der beiden Orientations nicht sichtbar ist?!

    Was ich merkwürdige finde sind die Aufrufe der App an die shouldAutorotateToInterfaceOrientation-Methode. Wenn ich vor das return noch ein NSLog der interfaceRotation setze erhalte ich im LandscapeLeft-Modus:


    2011-01-20 21:06:52.990 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:52.992 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.014 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.016 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.031 test[5729:207] interfaceOrientation 3
    2011-01-20 21:06:53.062 test[5729:207] interfaceOrientation 3
    2011-01-20 21:06:53.063 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.064 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.064 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.065 test[5729:207] interfaceOrientation 3
    2011-01-20 21:06:53.065 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.066 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.066 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.067 test[5729:207] interfaceOrientation 3
    2011-01-20 21:06:53.067 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.067 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.068 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.074 test[5729:207] interfaceOrientation 3
    2011-01-20 21:06:53.075 test[5729:207] interfaceOrientation 1
    2011-01-20 21:06:53.119 test[5729:207] interfaceOrientation 4

    Im LandscapeRight-Modus erhalte ich:

    2011-01-20 21:10:39.102 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.103 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.104 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.105 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.105 test[5759:207] interfaceOrientation 3
    2011-01-20 21:10:39.106 test[5759:207] interfaceOrientation 3
    2011-01-20 21:10:39.107 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.107 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.108 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.109 test[5759:207] interfaceOrientation 3
    2011-01-20 21:10:39.109 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.110 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.110 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.111 test[5759:207] interfaceOrientation 3
    2011-01-20 21:10:39.112 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.112 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.119 test[5759:207] interfaceOrientation 1
    2011-01-20 21:10:39.120 test[5759:207] interfaceOrientation 3
    2011-01-20 21:10:39.121 test[5759:207] interfaceOrientation 1

    Also zum einen verstehe ich nicht, wieso permanent interfaceOrientation 1 und 3 abgefragt wird. Aber entscheidend ist, dass im LandscapeRight-Modus die letzte, richtige Abfrage fehlt (So wie bei LandscapeLeft die 4).

    Außerdem finde ich es merkwürdig, dass der RootView jedesmal problemlos dargestellt wird ... sehr merkwürdig …

    EDIT:

    So, gerade nochmal den return auf interfaceOrientation == UIInterfaceOrientationLandscapeLeft geändert … wenn LandscapeLeft bislang funktioniert, dann würde ich das erstmal in Kauf nehmen. Aber nachdem ich das geändert hatte bekomme dort auch schwarz beim DetailViewController


    Und wenn ich den return auf

    Quellcode

    1. return (interfaceOrientation == UIInterfaceOrientationLandscapeRight || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationPortrait);


    ändere, dann funktionieren beide Landscape-Modi … aber leider auch der Portrait-Modus