So erkennen Sie, wann ein UIScrollView mit dem Scrollen fertig ist
UIScrollViewDelegate hat zwei Delegierte Methoden scrollViewDidScroll:
und scrollViewDidEndScrollingAnimation:
aber keiner von diesen sagen Sie, wenn das scrollen beendet hat. scrollViewDidScroll
nur Sie informiert, dass die scroll-view hab scrollen nicht, dass es fertig ist scrollen.
Die andere Methode scrollViewDidEndScrollingAnimation
scheint nur ausgelöst, wenn Sie programmgesteuert verschieben Sie die scroll-view nicht, wenn der Benutzer scrollt.
Weiß jemand von Schema zu erkennen, wenn ein scroll-view abgeschlossen scrollen?
InformationsquelleAutor der Frage Michael Gaylord | 2009-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Methoden, die du suchst
scrollViewDidEndDragging:willDecelerate:
undscrollViewDidEndDecelerating:
. Die erste wird immer dann aufgerufen, nachdem der Benutzer den finger anhebt. Wenn Sie gescrollt werden schnell genug in der Folge der Verzögerung,willDecelerate
wirdYES
und die zweite Methode wird aufgerufen, nachdem die Abbremsung beendet ist.(Aus der UIScrollViewDelegate docs.)
InformationsquelleAutor der Antwort Suvesh Pratapa
Den 320 Implementierungen sind so viel besser - hier ist ein patch für konsistente beginnen/enden von den Blättern.
InformationsquelleAutor der Antwort Ashley Smart
Ich denke scrollViewDidEndDecelerating ist die, die Sie wollen. Seine UIScrollViewDelegates optionale Methode:
Sagt der Delegierte, dass die scroll-view beendet wurde, anderenfalls sind die Scroll-Bewegung.
UIScrollViewDelegate Dokumentation
InformationsquelleAutor der Antwort texmex5
Für alle Schriftrollen verwandten zu ziehen Interaktionen, wird dies ausreichend sein:
Nun, wenn Sie Ihre schriftrolle ist durch einen programmatischen setContentOffset/scrollRectVisible (mit
animated
= JA oder Sie wissen offensichtlich beim scrollen beendet wird):Wenn Ihr scrollen ist durch etwas anderes (wie eine Tastatur öffnen oder Tastatur schließen), wie es scheint, haben Sie zu erkennen, die Veranstaltung mit einem hack, da
scrollViewDidEndScrollingAnimation
ist nicht nützlich.Falle einer PAGINIERTE scroll-view:
Weil, ich denke, Apple gelten eine Beschleunigung Kurve
scrollViewDidEndDecelerating
genannt, bekommen für jeden ziehen, so gibt es keine Notwendigkeit zu verwendenscrollViewDidEndDragging
in diesem Fall.InformationsquelleAutor der Antwort Aurelien Porte
Dieser beschrieben wurde, die in einigen der anderen Antworten, aber hier (in code) zu verbinden
scrollViewDidEndDecelerating
undscrollViewDidEndDragging:willDecelerate
einige Vorgang, wenn das scrollen beendet ist:InformationsquelleAutor der Antwort Wayne Burkett
Ich habe nur gerade diese Frage, das ist so ziemlich das gleiche fragte ich:
Wie Sie genau wissen, Wann ein UIScrollView ist das scrollen aufgehört hat?
Obwohl didEndDecelerating funktioniert, wenn scrolling, panning mit einer stationären Version nicht registrieren.
Ich fand schließlich eine Lösung. didEndDragging hat einen parameter WillDecelerate, die ist falsch in der stationären release-situation.
Indem für !Abbremsen, DidEndDragging, kombiniert mit didEndDecelerating bekommen Sie beides Situationen, die das Ende scrollen.
InformationsquelleAutor der Antwort Aberrant
Habe ich versucht, Ashley Smart s Antwort und es funktionierte wie ein Charme. Hier ist eine weitere Idee, mit Hilfe von nur scrollViewDidScroll
Ich hatte gerade zwei Seiten, so dass es für mich funktionierte. Allerdings, wenn Sie mehr als eine Seite, es könnte problematisch sein (man könnte prüfen, ob der aktuelle offset ist ein Vielfaches der Breite, aber dann würden Sie nicht wissen, ob der Benutzer angehalten, bei der 2. Seite oder ist auf dem Weg zu 3. oder mehr)
InformationsquelleAutor der Antwort Ege Akpinar
Swift version der akzeptierten Antwort:
InformationsquelleAutor der Antwort zzzz
Nur entwickelte Lösung zu erkennen, wenn das scrollen fertig app-Breite:
https://gist.github.com/k06a/731654e3168277fb1fd0e64abc7d899e
Es basiert auf der Idee der Nachverfolgung von änderungen von runloop-Modi. Und führen zumindest blockiert nach 0,2 Sekunden nach dem scrollen.
Dies ist die Kern-Idee für die Verfolgung von runloop Modi änderungen iOS10+:
Und Lösung für low-deployment-Ziele, wie iOS2+:
InformationsquelleAutor der Antwort k06a
Zur Erinnerung (und für Anfänger). Es ist nicht so schmerzhaft. Fügen Sie das Protokoll, dann fügen Sie die Funktionen, die Sie benötigen für die Erkennung.
In der Ansicht (Klasse) enthält die UIScrolView, fügen Sie das Protokoll, dann hat jede der Funktionen, die von hier aus Ihrer Sicht (Klasse).
InformationsquelleAutor der Antwort bob
Ich hatte einen Fall, von Antippen und ziehen Aktionen, und ich fand heraus, dass das ziehen war Berufung scrollViewDidEndDecelerating
Wird und die änderung offset manuell mit code ([_scrollView setContentOffset:contentOffset animated:YES];) ruft scrollViewDidEndScrollingAnimation.
InformationsquelleAutor der Antwort Adriana
Wenn jemand braucht, hier ist Ashley schlaue Antwort in Swift
InformationsquelleAutor der Antwort Xernox
Alternative wäre die Verwendung
scrollViewWillEndDragging:withVelocity:targetContentOffset
die aufgerufen wird, wenn der Benutzer hebt den finger und enthält die Ziel-Inhalt-offset, an dem das scrollen zu stoppen. Mit diesem Inhalts-offset inscrollViewDidScroll:
korrekt identifiziert, wenn die scroll-view aufgehört hat zu scrollen.InformationsquelleAutor der Antwort Wonder Dog
UIScrollview hat eine delegate-Methode
Fügen Sie die folgenden Zeilen von code in der delegate-Methode
InformationsquelleAutor der Antwort Rahul K Rajan
Es ist eine Methode der
UIScrollViewDelegate
die verwendet werden können, zu erkennen (oder besser zu sagen, "prognostizieren") beim scrollen hat wirklich fertig:des
UIScrollViewDelegate
die verwendet werden können, zu erkennen (oder besser zu sagen, "prognostizieren") beim scrollen hat wirklich fertig.In meinem Fall habe ich es mit horizontalem scrollen wie folgt (in Swift 3):
InformationsquelleAutor der Antwort lexpenz