Problem: Zwei ScrollViews - scrollToTop klappt auf iPhone nicht, dafür aber auf iPad

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

  • Problem: Zwei ScrollViews - scrollToTop klappt auf iPhone nicht, dafür aber auf iPad

    Ich habe ein Problem mit einer ScrollView. Während auf den meisten Views ein Tap auf die StatusBar oben meine ScrollView (wie es sich gehört) nach oben rollt, klappt das mit einer bestimmten View (eines TabBarControllers) nicht, auf der ZWEI ScrollViews vorhanden sind. Es passiert einfach nichts, zumindest auf dem iPhone. Die iPad Version klappt anstandslos (Universal App).

    Obwohl es auf den anderen Views ohne eine Zeile Code automatisch funktioniert, hat selbst folgender Code für die betreffende View keine Lösung gebracht. Da ich bei stackoverflow gelesen habe, dass das iPhone durcheinander kommt, welche ScollView zu scrollen ist, hoffte ich darauf, es per Code quasi vorgeben zu können:

    SQL-Abfrage

    1. - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView {
    2. NSLog(@"called scrollViewShouldScrollToTop");
    3. if (scrollView == self.scrollViewVert)
    4. {
    5. return YES;
    6. }
    7. return NO;
    8. }



    NSLog zeigt, dass die Methode gar nicht erst aufgerufen wird. ?(

    Die Eigenschaften der beiden ScrollViews sind wie folgt gesetzt:

    SQL-Abfrage

    1. scrollViewVert.delegate = self;
    2. scrollViewHor.delegate = self;
    3. scrollViewVert.scrollsToTop = YES;
    4. scrollViewHor.scrollsToTop = NO;



    Habt ihr eine Idee was ich noch versuchen kann?
  • macmoonshine schrieb:


    In der Doku findet sich ein versteckter Hinweis, wie Du es lösen kannst: Schalte scrollsToTop bei einem Scrollview ganz aus und in der Delegatemethode scrollst Du diesen Scrollview dann manuell nach oben.

    Schau mal nach oben in meinen Eingangspost. Die Delegate Methode wird komischerweise nie aufgerufen!
    Und eine der beiden ScrollViews ist eh ausgeschaltet, wie du sehen kannst. Die soll nänmlich auch garnicht automatisch scrollen.

    Mich verwirrt total, dass es auf dem iPad funktioniert wie es soll, nur auf dem iPhone nicht. Und wenn ich Google, stelle ich fest, dass mehr Leute das Problem haben. Hat nur keiner eine Lösung, ausser alles manuell programmieren mit eigener Gesture Erkennung usw. ;(
  • macmoonshine schrieb:


    Mag ja sein, Herr Einstein, dass mein Vorschlag nicht funktioniert. Im OP steht aber nichts davon, dass die Delegatemethode nicht aufgerufen wird. Da steht nur: Es passiert einfach nichts.
    Doch steht da: :D

    NSLog zeigt, dass die Methode gar nicht erst aufgerufen wird.
    Eines der Dinge die mich wirklich irritieren. Hab echt keine Idee mehr.
    Ich mein, die Scroll Funktion ist nicht Kriegsentscheidend für die App. Aber ich bin da eigentlich pingelig bei so Dingen. Wenn das in allen anderen Tabs klappt, dann doch bitte auch auf diesem. Und mir will nicht in den Kopf, warum sich das iPad so anders verhält.
  • macmoonshine schrieb:

    Welches SDK verwendest Du denn? Betrifft das nur das Gerät oder auch den Simulator?
    Sorry für die späte Antwort, hatte leider wenig Zeit.
    Das SDK ist 5.0 und das Verhalten ist im Simulator genauso wie auf den Geräten. iPhone klappt nicht, iPad scrollt nach oben.
  • Yedy schrieb:

    Ist auf dem iPhone vielleicht noch ein UI-Element welches auch eine ScrollView hat und scrollsToTop dort nicht disabled ist?
    ScrollView ist ja Superclass von einigen UI-Elementen.
    Wie weiter oben beschrieben, sind in der View 2 ScrollViews (Cross-Directional Scrolling). Für das quer Scrolling ist scollsToTop aber ausgeschaltet!
    Sonst befindet sich da nur noch ein TextView und ein PageControl.
  • macmoonshine schrieb:

    Der Textview ist auch ein Scrollview. ;)
    Oh man, das wars!!!

    Sagte ich, dass ich dich liebe!? :love: :D


    Ich weiss natürlich eigentlich, dass ein TextView ein ScrollView ist, kam nur nicht drauf, weil ich das Scrolling in diesem TextView generell (per IB) abgeschaltet hatte. :rolleyes:
    Vielen herzlichen Dank an alle Thread Teilnehmer und besonders an macmoonshine !!!
  • Direkt an Taps auf die Statusbar bzw. die Position des Taps kommt man nicht ran, oder?

    Ich habe hier ein iOS5 View Controller Containment auf dem iPad, wobei die 2 Hauptviews von UIScrollview abstammen.
    Ich hätte gern ein Verhalten wie man es von der Mail App des iPads:
    - Klickt man weiter rechts auf die Statusbar, scrollt die rechte View hoch.
    - Klickt man weiter rechts auf die Statusbar, scrollt die linke View hoch.

    Ich kann natürlich wie hier beschrieben problemlos beide Views nach oben scrollen, aber die getrennte Lösung erscheint mir intuitiver.