Views unter View deaktivieren

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

  • Views unter View deaktivieren

    Hallo Leute,
    ich habe folgendes Verhalten:

    Ich habe eine ScrollView, in der Ich per Klick einige Views aufbaue, die Bilder in einer CollectionView präsentieren. Möchte man nun diese Bilder in groß sehen, klickt man folglich auf ein Bild und dieses erscheint in groß.

    Dies realisiere ich einfach indem ich eine ImageView auf die Größe des iPads setze und das Bild mit aspectRatioFit einblende.
    Den Background der ImageView setze ich auf schwarz mit 0.5 alpha, somit sieht man noch was neben bzw, unter dem Bild ist.

    Wische ich jetzt über die ImageView(die ja ganz oben in der view hierarchie ist), scrollt aber die ScrollView im Hintergrund.

    Ist dieses verhalten normal, bzw. wie kann ich das verhindern?

    Danke & Grüße
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Fortrackz schrieb:

    Das 2. will ich vermeiden, da ich sonst bei jedem View erzeugen, eben die ScrollView "deaktivieren" muss. Wäre nervig.

    Was ist daran nervig? Du wirst ja sicherlich eine Methode habe, welche den ImageView erzeugt und anzeigt. Darin kannst Du dann einfach den ScrollView deaktivieren.

    Dann wirst Du auch sicherlich eine Methode haben, welche den angezeigten ImageView wieder entfernt. Darin kannst Du den ScrollView dann einfach wieder aktivieren.
  • Nun ein neues Problem, zum gleichen Thema.

    Jetzt habe ich das Problem, dass wenn ich userInteractionEnabled habe, natürlich auch Touches außerhalb der View nicht angenommen werden.

    Sprich wenn ich in der View bin, soll diese View die Touches bekommen, wenn der Touch außerhalb ist, die View darunter.
    Siehe Bild.
    Sobald ich in das weiße touche soll sich das schwarze minimieren. Wenn ich im schwarzen touche soll es aber nicht minimiert werden.

    Edit:

    Wenn ich bei der schwarzen View UserInteractionEnabled = YES mache dann sind die Controls in dieser View nicht mehr Anklickbar :(

    [Blockierte Grafik: http://abload.de/img/viewfzspu.png]
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Fortrackz ()

  • Wenn Du den ImageView mit userInteractionEnabled = YES "Fullscreen" auf einem anderen View anzeigst, dann kann der darunter liegende View natürlich keine Touches mehr empfangen, da der ImageView ja Fullscreen ist. ;)

    Der Zusammenhang zwischen dem 1. und dem letzten Post ist mir nicht ganz klar.

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

  • Zum Hintergrund:

    Das ganze soll eine Zeitleiste sein. Sprich, in der ScrollView sind "Striche" in Form von UIViews. Überhalb dieser Punkte sind Markierungen wenn zu diesem Jahr Daten verfügbar sind. Klickt man diese an, öffnet sich der "Strich" in einer Animation. In dieser werden dann die Daten dargestellt wie z.B. Bilder in einer CollectionView oder eben Text.
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Ein richtiges Bild wäre hilfreich. Ich verstehe nämlich immer noch Bahnhof. Striche sind Views und die sind wieder Punkte mit was drüber oder auch nicht. Bist Du sicher das Deine App noch intutiv benutzbar sein wird?

    Auf jeden Fall klingt es für mich jetzt schonmal so, dass es deutlich sinnvoller wäre ab der Animation einfach einen neuen ViewController zu nehmen statt alles in einen zu quetschen. Wenn du eh animierst kannst du ja auch zu einem neuen ViewController animieren.

    Gruß

    Claus
    2 Stunden Try & Error erspart 10 Minuten Handbuchlesen.

    Pre-Kaffee-Posts sind mit Vorsicht zu geniessen :)
  • Hier mal mit Screenshot. Sorry für die wirre Erklärung, hatte noch kein Kaffee :D

    Mein Problem ist also, dass ich gerne hätte sobald man außerhalb des Fenster klickt, die VIew sich wieder schließt. Aber die Touches innerhalb der View sollen natürlich kein Schließen verursachen.

    Habe ich userInteractionEnabled für die View auf YES, funktioniert das mit dem außerhalb klicken nicht mehr.
    Habe ich es auf NO schließt sich die View sobald ich auf kein Control innerhalb der View klicke. Also klick ich auf die SegmentBar klappt das auch. Klick ich neben Sie also direkt auf die ContentView, schließt sich diese, weil dies als Touch in der ScrollView erkannt wird.

    [Blockierte Grafik: http://abload.de/img/iossimulatorbildschire0k9e.png]
    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de
  • Hier meine Lösung:

    Quellcode

    1. - (void) scrollViewTapped: (UIGestureRecognizer *) sender
    2. {
    3. CGPoint touchPoint = [sender locationInView:self];
    4. if(selectedView && !CGRectContainsPoint(selectedView.frame, touchPoint))
    5. [self minimizeView:selectedView completion:nil];
    6. [self deletePopupItemsWithCompletion:nil];
    7. }

    Every language has an optimization operator. In ObjC that operator is ‘//’.

    golbros.de