Wie kann ich erkennen, dass UIWebView den oberen oder unteren Rand erreicht? Weil ich eine Aktion auslösen muss, wenn ich den Boden erreiche.
So ist das machbar?
Zunächst sollten Sie Ihre UIWebView
nicht in eine UIScrollView
einfügen, wie in der UIWebView
-Dokumentation erwähnt.
Wichtig: Sie sollten UIWebView- oder UITableView-Objekte nicht in UIScrollView-Objekte einbetten. Wenn Sie dies tun, kann unerwartetes Verhalten auftreten, da Berührungsereignisse für die zwei Objekte verwechselt und falsch behandelt werden können.
Stattdessen können Sie auf UIScrollView
über die UIWebView
-Eigenschaften zugreifen. Ihr View-Controller kann UIScrollViewDelegate
implementieren.
Dann können Sie den UIScrollView:
%Vor%Dann erkenne endlich das Erreichen von Oben und Unten:
%Vor%Voila, Sie können erkennen, wenn oben und unten erreicht werden.
Wenn Sie iOS 5 als Ziel verwenden, verfügt UIWebView
über eine schreibgeschützte Eigenschaft scrollView
, mit der Sie auf das zugrunde liegende UIScrollView
zugreifen können.
Von dort können Sie in die delect-Methode scrollViewDidScroll:
der scrollView einhaken, um Informationen zu Scroll-Ereignissen zu erhalten.
Sie können dies ausprobieren -
%Vor%Was hier gemacht wird, ist jedes Mal, wenn der Benutzer scroll WebView, berechnen Sie die% scrolled & amp; Wenn das% scrolling zum Ende kommt (sagen Sie irgendetwas & gt; 90%), tun Sie, was immer Sie vorhaben zu tun.
Sie könnten UIWebView in ein UIScrollView einfügen (das Bouncen ist deaktiviert, so dass das Bounce-Verhalten der Ansichten nicht in Konflikt gerät) und wenn UIWebView nach unten scrollt, übernimmt das obige UIScrollView das Scrollen und Sie kann auf seine Scroll-Ereignisse hören.
Scheint, dass es nicht so einfach ist.
Sie können UIScrollView unter den Unteransichten von UIWebView finden und auf seine Scroll-Delegate-Methoden tippen.
%Vor%Wenn UIWebView den Web-Inhalt lädt, sollte UIScrollView seine contentSize-Eigenschaft ändern. Sie können damit bestimmen, ob Sie bereits unten oder oben sind oder nicht.
Sie könnten KVO verwenden, um Änderungen in der Eigenschaft contentOffset
Ihrer UIWebView
-Instanz zu erkennen.
Warnung: Seien Sie vorsichtig, da sich diese Eigenschaft beim Scrollen sehr oft ändert und die Ereignisse im folgenden Beispiel sehr häufig auftreten. Implementieren oder rufen Sie keine kostenintensive Funktion bei jeder contentOffset-Änderung auf!
Hier ist ein Codebeispiel, um es in einer UIView
Unterklasse zu machen, die ein UIWebView
enthält:
Wie von Apple in der UIWebview-Dokumentation dokumentiert, sollten Sie es vermeiden, Ihre UIWebview-Instanz in eine UIScrollView zu platzieren, um das Ende / Beginn des Scrollens zu erkennen.