Wenn eine Tabelle viele Zeilen enthält, kann der Benutzer die Tabelle nach oben / unten streichen. Dies erzeugt eine Scroll-Animation, die abhängig von der Geschwindigkeit / Länge der Flick-Geste eine deterministische Länge zu haben scheint. Ist es möglich, zuverlässig zu berechnen, welche Zeilen in der Tabelle sichtbar sind, wenn das Scrollen aufhört, wenn keine weitere Benutzerinteraktion stattfindet?
In iOS 5.0 und höher gibt es eine neue API für die UIScrollViewDelegate genannt scrollViewWillEndDragging: mitVelocity: targetContentOffset: . Mit dieser neuen Methode kann die Stopp-Position der Scroll berechnet und sogar geändert werden, wie in der Video Session 100: What's New in Cocoa Touch , um die neunte Minute.
UITableView
erbt von UIScrollView
und Sie können dies erreichen, indem Sie mit den UIScrollViewDelegate
-Methoden und der Tabellenansicht indexPathsForVisibleRows
-Eigenschaft prüfen, welche Zellenindexpfade in dem Moment sichtbar sind, in dem der Bildlauf stoppt.
Sie können sogar die Anfangsposition speichern, ab der die Verzögerung gestartet wurde, so dass Sie berechnen können, ob die Bildlaufrichtung nach oben oder unten war, was Sie darüber informiert, ob die Zelle, die gestoppt wird, die erste oder die letzte ist von den sichtbaren.
%Vor% Ein wichtiger Hinweis zum obigen Code ist, dass er auf die Tabellenansicht als Variable _myTableview
verweist, anstatt nur die Delegiertenmethodenvariable scrollView
auf eine UITableView *
zu übertragen, obwohl das nur Implementierungsdetails sind und nicht sollten beeinflussen Sie die Logik hier.
Interessante Frage ..... UITableViewDelegate
stimmt auch mit UIScrollViewDelegate
überein: Ссылка
Es gibt einige Delegat-Rückrufe, die Sie verwenden können, um zu wissen, wann der Bildlauf zu verlangsamen beginnt, und endet mit dem Abbremsen.
Sie könnten wahrscheinlich – scrollViewDidEndDecelerating:
verwenden und zu diesem Zeitpunkt die Zellenhöhen und die Inhaltsversatz-Eigenschaft der tableView (tableView-Unterklassen UIScrollView
) verwenden und dann die Zellen berechnen, die nach der Verlangsamung sichtbar sind.
Tags und Links iphone uitableview scroll gesture