2010-03-01 10 views
6

I verwiesen diese Frage: How to detect when a UIScrollView has finished scrollingIst es möglich, benachrichtigt zu werden, wenn ein UITableView das Scrollen beendet?

UITablewView ist eine Unterklasse von UIScrollView, und mein UITableView Delegierten tut die - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView Nachricht zu erhalten, wenn ich die Tabelle mit der Hand bewegen.

Allerdings, wenn ich - (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated aufrufen, um die Tabelle zu scrollen, bekomme ich die scrollViewDidEndDecelerating Nachricht nicht. Ich rufe die scrollRowToIndexPath... Methode mit animated:YES an.

Ist das ein Bug/API Einschränkung (auf dem iPhone SDK 3.1.3) oder bin ich dabei einen anderen Weg, dies zu tun?

+0

gerade entwickelte Lösung ended App-weit scrollen verfolgen: http://stackoverflow.com/a/42705702/440168 – k06a

Antwort

6

Nur falls jemand noch diese eine jagt, sagt der Apple-docs des folgenden unter der scrollToRowAtIndexPath:atScrollPosition:animated: Dokumentation:

„diese Methode Aufrufe der Delegaten nicht dazu führt, eine scrollViewDidScroll zu erhalten: Nachricht, wie normal für programmatisch aufgerufene Benutzeroberflächenoperationen. "

1

Ich hatte das gleiche Problem. Aber ich löste es, indem Sie diese nach an die angegebene Zeile programmatisch Scrollen:

NSTimer *t = [NSTimer scheduledTimerWithTimeInterval: 0.6 
               target: self 
              selector:@selector(doneScrolling) 
              userInfo: nil repeats:NO]; 

In meinem Fall, ich wollte nur die Zeile markieren, nachdem es zu gescrollt wurde.

ODER

Wenn Sie den Code wollen mehr sofort ausgeführt und wollen nicht für 0,6 Sekunden warten, könnten Sie eine Schleife in der Lage zu überprüfen, zu halten, ob die Zeile, die Sie gescrollt haben, um zu sehen ist noch . Verwenden Sie die visibleCells-Eigenschaft in der UITableView. Wenn es sichtbar ist, dann wissen Sie, es ist getan Scrollen und Sie können Ihren Code ausführen.

Verwandte Themen