2013-04-02 13 views
19

Ich versuchte dies:wenn UITableView gescrollt hat nach oben

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView 

Aber es wurde nicht ausgelöst, wenn ich die Tabellenansicht nach oben gescrollt.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView 

Feuert so der Delegat ist nicht das Problem.

In viewDidLoad Ich habe auch [myTbl setDoesScrollToTop:YES];

+0

tut scrollViewDidScrollToTop Feuer, wenn Sie die Statusleiste berühren? – Felix

Antwort

48

Die scrollViewDidScrollToTop: Methode wird ausgelöst, wenn der Benutzer in der Statusleiste klickt und die scrollsToTop Eigenschaft auf YES gesetzt. Aus der Dokumentation:

Die Bildlaufansicht sendet diese Nachricht, wenn der Bildlauf bis zum Anfang des Inhalts abgeschlossen ist. Es kann sofort aufgerufen werden, wenn der Inhalt oben bereits angezeigt wird. Damit die Scroll-To-Top-Geste (ein Antippen der Statusleiste) wirksam wird, muss die scrollsToTop-Eigenschaft von UIScrollView auf YES gesetzt werden.

Es wird nicht ausgelöst, wenn der Benutzer manuell nach oben scrollt. Wenn Sie mit diesem Fall umgehen wollen, müssen Sie die Methode scrollViewDidScroll: implementieren und prüfen, ob sich die Schriftrolle selbst oben befindet.

Sie können dies durch die contentOffset Eigenschaft z.B .:

if (scrollView.contentOffset.y == 0) { // TOP } 
+0

Ah. Erwischt. Vielen Dank. – JoshDG

+0

Schön, erklärt viel. – RainCast

Verwandte Themen