ModalViewController mit fixer Größe

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

  • ModalViewController mit fixer Größe

    Hallo,

    ich stehe gerade vor dem Problem, dass ich einen modalen ViewController erstellen möchte, der aber eine fixe Größe hat. Anwendungsfall: Ich klicke auf einen Button und es öffnet der modale View. Dieser soll auf dem iPad aber z.B. genau 800x500 Pixel sein und an der Position x= 40; y= 80 beginnen. Zudem möchte ich, dass der Benutzer noch Touches auf das Umfeld anwenden kann. Bisher habe ich es nämlich nur geschafft, einen modalen View mit einer vordefinierten Größe (durch iOS) darzustellen und dann konnte ich auch keine Touches auf andere Elemente ausführen, solange der View dargestellt wurde.

    Alternativ hatte ich vor, statt dem modalen view, eine normale View hinzuzufügen, jedoch hatte ich dann mal wieder das Problem mit dem ViewController. Wenn ich addSubview bei meinem rootViewController mache, reagiert der eigene viewController (der hinzugefügten View) nicht mehr. Grrr... :S

    Vielleicht hat ja jemand einen Rat für mich.

    Grüße
  • Popover gibt es aber nur auf dem iPad oder? Es soll, wenn möglich, eine allgemeine Lösung (iphone + ipad) werden.

    Ja, dass das ein Widerspruch ist, war mir auch irgendwie bewusst. Aber dummerweise konnte ich es halt nur per modalen View machen, da mir sonst immer der view Controller einen Strich durch die Rechnung gemacht hat. Der hat nämlich das Drehen nicht unterbinden können (da er gar nicht mehr reagiert hat).
  • Vivid schrieb:

    Popover gibt es aber nur auf dem iPad oder? Es soll, wenn möglich, eine allgemeine Lösung (iphone + ipad) werden.

    Von iPhone hattest Du aber nichts geschrieben. Dafür kannst Du aber auch meinen ersten Vorschlag (s. Link) verwenden.

    EDIT: Unter iOS 5 kannst Du übrigens auch Viewcontroller für die Verwaltung von Subviews verwenden: openbook.galileocomputing.de/a…81-4db0-8db3-4376f11656ac
    „Meine Komplikation hatte eine Komplikation.“
  • In den iOS-Versionen vor 5 sollten Viewcontroller nicht die Views anderer Viewcontroller über addSubview: oder die insertSubview-Methoden in ihre Views einbinden. Das ist zwar möglich, führt aber dazu, dass das Betriebssystem die Methoden für die Viewrotation und den Anzeigezyklus nicht aufruft.


    Heißt das, dass ich unter iOS 4 nur die Möglichkeit eines ModalViewControllers habe, sofern ich auf einen neuen View (INKL. dazugehörigen ViewController) angewiesen bin? Denn sonst habe ich ein Problem mit der ViewRotation. :whistling:
  • Vivid schrieb:

    Heißt das, dass ich unter iOS 4 nur die Möglichkeit eines ModalViewControllers habe, sofern ich auf einen neuen View (INKL. dazugehörigen ViewController) angewiesen bin? Denn sonst habe ich ein Problem mit der ViewRotation.

    Nein, aus diesem Grund beschreibt ja das Kapitel, wie Du eigene Viewcontrollerklassen erstellen kannst.
    „Meine Komplikation hatte eine Komplikation.“
  • Vivid schrieb:

    Wieso findet man sowas nicht in anderen Büchern? :)

    Wir haben halt Fragestellungen verwendet, die hier im Forum immer wieder auftreten. Views nachladen ist ja schon fast ein Klassiker ;)

    Vivid schrieb:

    Da muss man erst so ein schönes OpenBook haben ;)

    ...und das gibt es sogar noch als gedruckte Version zum käuflichen Erwerb :D +scnr+
    „Meine Komplikation hatte eine Komplikation.“
  • wie kann ich denn z.B. unterbinden, dass mein SubviewController sich dreht. Auch wenn der Hauptcontroller dafür verantwortlich ist, müsste er dem Subviewcontroller doch sagen, ob er sich drehen darf oder nicht.

    Müsste ich dann im Hauptcontroller eine Referenz auf meinen Subviewcontroller halten und dann in der shouldAutoRotate-Methode meines Subviewcontroller aufrufen? Das dürfte ja eigentlich keine Auswirkung haben oder?
  • Vivid schrieb:

    wie kann ich denn z.B. unterbinden, dass mein SubviewController sich dreht. Auch wenn der Hauptcontroller dafür verantwortlich ist, müsste er dem Subviewcontroller doch sagen, ob er sich drehen darf oder nicht.

    Macht das Sinn?

    Vivid schrieb:

    Müsste ich dann im Hauptcontroller eine Referenz auf meinen Subviewcontroller halten und dann in der shouldAutoRotate-Methode meines Subviewcontroller aufrufen? Das dürfte ja eigentlich keine Auswirkung haben oder?

    Richtig. Du willst wahrscheinlich eher auf Rotationsereignisse reagieren: developer.apple.com/library/io…c/uid/TP40006926-CH3-SW58
    Die solltest Du eher an den SubviewController weiterreichen.
    „Meine Komplikation hatte eine Komplikation.“
  • Naja, es macht bedingt Sinn. :)

    Ich möchte z.B. meinen Subview (Subviewcontroller) nur im "Hochformat" anzeigen. Das Drehen soll somit verhindert werden. Komischerweise dreht mein Subview automatisch. :)

    Hab jetzt die ShouldAutoRotate-Methode vom Hauptcontroller verändert. Es wird jetzt nur noch YES returned, wenn mein SubController nicht angezeigt wird.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Vivid ()

  • Hallo, ich muss nochmal kurz stören... :)

    Als Subview lade ich eine Webview. Als ich habe eine XIB, welches eine Webview beinhaltet. Ich möchte nun aber, dass ich beim Adden der Subview diese immer nur in der Portrait-Ausrichtung hinzufüge. Hält der Benutzer das Gerät im Landscape, soll sie sich trotzdem im Portrait öffnen und der Benutzer muss das Gerät dann drehen. Ist das möglich? Bisher öffnet der SubviewController meine View immer in der Lage, in der das Gerät sich gerade befindet Ich möchte den Controller aber zwingen, dass er es in der Portrtrait-Asurichtung öffnet.

    Ist das möglich? Wenn ja, wie?

    wollte es eigentlich in der shouldAutoRotate-Methode des Hauptcontrollers machen. Leider bekommt er das Event logischerweise nur mit, wenn es gedreht wird. Ich müsste irgendwie dem Subviewcontroller mitteilen, dass der View immer nur im Hochformat geladen werden soll. Ist sowas denn möglich? Der SubviewController reagiert ja nicht auf shouldAutoRotate. Kann ich das beim Erstellen/Anzeigen dem SubviewController mitteilen?

    Danke!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Vivid ()