UIScrollView + UIWebView = Nein scrollsToTop

8

Es sieht nach einem Problem aus, das eine einfache Lösung haben könnte, aber ich habe nichts gefunden, was den Weg dorthin weisen könnte. Ich benutze UIWebView innerhalb von UIScrollView und tippen auf StatusBar (um Inhalt nach oben scrollen) funktioniert nicht.

Ich habe eine einfache Testanwendung gemacht, um zu sehen, ob es wirklich an UIWebViews liegt. Und das ist es wirklich.

%Vor% %Vor%

Also, ich denke, ich könnte etwas deaktivieren, damit UIWebView nicht mit scrollToTop verschmutzt wird? Oder eine Art Workaround wäre auch nett.

Irgendwelche Ideen?

    
sniurkst 01.02.2010, 07:36
quelle

4 Antworten

7

Ich bin diese letzte Nacht reingerannt, bis ich die Antwort schließlich in einem Kommentar zu einem Kommentar gefunden habe. Das Idee dieses ursprünglichen Post ist, dass, wenn Sie die UIWebView zu Ihrem UIScrollingView hinzufügen, Sie die folgenden verwenden:

%Vor%

Das erschien mir faul, da die erste Unteransicht eines UIWebViews ein UIScroller ist, der keine Unterklasse von UIScrollView ist. Da UIScroller jedoch die scrollsToTop-Eigenschaft unterstützt, gibt uns der Cast nur einen Weg nach der Compiler-Warnung:

%Vor%

BEARBEITEN: Noch ein kurzer Hinweis, wo dies eigentlich sein muss: im WebViewDidFinishLoad Callback. Das Aufrufen der UIWebView-Konstruktion ist nicht gut genug, weil das UIWebView zu diesem Zeitpunkt noch keine untergeordneten Ansichten erstellt hat, die das Problem verursachen:

%Vor%

EDIT # 2:

jetzt, in iOS 5, wie in iPhone OS: Tippen Sie auf die Statusleiste, um nach oben zu blättern funktioniert nicht nach dem Entfernen / Hinzufügen zurück verwenden Sie die neue @property scrollView von UIWebView, wodurch die ensureScrollsToTop Implementierung für Projekte, die keine Implementierungsziele unter iOS 5.0 verwenden, unnötig wird.

    
nivekastoreth 25.02.2010, 18:31
quelle
3

Wenn in iPhone OS im aktuellen viewController mehr als ein UIScrollView (oder seine Unterklasse, zum Beispiel UITableView, UIWebView) vorhanden ist, weiß das System nicht, welches UIScrollView nach oben gescrollt werden soll.

Schnellkorrektur: Für alle UIScrollViews, die scrollsToTop nicht unterstützen wollen, setzen Sie scrollsToTop einfach auf NO, dann funktioniert alles perfekt.

%Vor%     
flypig 06.09.2012 11:13
quelle
0

Webviews standardmäßig haben YES für scrollsToTop-Wert. Ich habe eine einfache Klasse für dieses spezielle Problem geschrieben. In meiner App haben wir mehrere Webviews und Scrollviews. Das macht alles viel einfacher.

Ссылка

Im Grunde setzt scrollsToTop auf NO auf allen anderen scrollViews als dem, das Sie angeben.

    
hfossli 01.10.2013 10:01
quelle
0

Ich möchte meinen Fall hinzufügen, ich füge ein UIWebView auf einem UIScrollView hinzu, als h4xxr sagte :

  

Wenn mehrere Scroll-Ansichten vorhanden sind, wird eine scrollViewDidScrollToTop-Nachricht ignoriert

Also bekomme ich einen einfachen Weg, um es mit webView zu arbeiten: setze einfach die scrollsToTop Eigenschaft des scrollView s false.

Und wenn Sie auf die Statusleiste tippen, wird sie nicht von scrollView abgefangen, und der webView scrollt nach oben!

%Vor%     
FFur 16.12.2016 09:39
quelle

Tags und Links