Wie bekomme ich scrollViewDidScrollToTop arbeiten in einem UITableView?
Ich denke, der Titel erklärt alles. Ich möchte benachrichtigt werden, wenn ein Benutzer scrollt auf die Spitze eines tableview.
Ich habe versucht, die folgenden mit kein Glück und dann auch noch ein UIScrollViewDelegate der .h-Datei.
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
NSLog(@"ScrolledToTop");
}
Dank!
Bearbeiten: kann ich es zu nennen, wenn ich drücken Sie die status-bar. Aber nicht, wenn ich scrollen nach oben. Komisch... könnte es damit etwas zu tun haben mit der tableview Prellen, wenn es die Spitze erreicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was passiert, wenn Sie versuchen, diese?
Ist das nah genug?
Den
func scrollViewDidScroll(_ scrollView: UIScrollView)
delegate-Methode wird den trick tun, aber es wird jedes mal aufgerufen, wenn der scrollview bewegt sich ein Punkt. Eine weniger hyperaktiv alternative wäre diese:Ermöglicht es den Delegierten wissen, die scrollView wird die Spitze erreichen, bevor es wirklich ankommt, und weil
targetContentOffset
ist ein Zeiger können Sie seinen Wert ändern, um einzustellen, wo die scrollview beendet seine scrolling-animation.Zwei weitere Optionen, die möglicherweise einfacher sein, basierend auf Ihrer situation sind:
Ersten, wenn Sie versuchen zu erkennen, das Ergebnis einer animation nur, ausgelöst entweder durch die Animation
contentOffset
selbst oder durch einen Aufruf UITableViewscrollToRowAtIndexPath:
, oder UICollectionViewscrollToItemAtIndexPath:
, implementierenDiese nicht aufgerufen werden, nachdem eine manuelle scrollen Sie mit dem finger, was kann oder kann nicht hilfreich sein, manchmal.
Zweiten, wenn Sie zu tun versuchen, so etwas wie unendliche scrollen, wo Sie die Liste aktualisieren, wenn Sie an der Spitze zu erhalten, oder laden Sie eine andere Seite der Ergebnisse, wenn Sie auf den Boden, eine einfache Möglichkeit, es zu tun ist, um Sie nur den Aufruf in der Datenquelle
cellForRowAtIndexPath:
das erspart Ihnen die Notwendigkeit zur Umsetzung der Delegierten alle zusammen.Tun es in Swift: