In welcher Zeile wird UITableView mit dem Scrollen aufhören?

9

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?

    
Grzegorz Adam Hankiewicz 24.05.2011, 20:53
quelle

4 Antworten

5

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.

    
Grzegorz Adam Hankiewicz 14.01.2012, 20:33
quelle
1

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.

    
Felipe Sabino 24.05.2011 22:35
quelle
0

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.

    
Sid 24.05.2011 22:15
quelle
-1

Ich weiß nicht, wie Sie bestimmen können, wie viele Zeilen angezeigt werden, aber Sie können immer sehen, wie viele Zeilen angezeigt wurden. (Sobald der Tisch aufhört, ohne sich weiter zu berühren.) Nicht sicher, ob das hilft, aber das ist, wie Sie es tun würden

%Vor%     
Louie 24.05.2011 21:48
quelle

Tags und Links