2010-03-01 45 views
6

我提到了這個問題:How to detect when a UIScrollView has finished scrolling當UITableView完成滾動時可以通知它嗎?

UITablewView是的UIScrollView的子類,而我的UITableView委託確實,當我用手滾動表得到- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView消息。

但是,當我撥打- (void)scrollToRowAtIndexPath:(NSIndexPath *)indexPath atScrollPosition:(UITableViewScrollPosition)scrollPosition animated:(BOOL)animated滾動表時,我沒有收到scrollViewDidEndDecelerating消息。我打電話給scrollRowToIndexPath...方法animated:YES

這是一個錯誤/ API的限制(在iPhone SDK 3.1.3上)還是我錯過了另一種方式來做到這一點?

+0

剛開發的跟蹤滾動的解決方案結束了應用廣泛:http://stackoverflow.com/a/42705702/440168 – k06a 2017-03-09 21:27:29

回答

6

萬一有人還在追逐這其中,蘋果文件說的scrollToRowAtIndexPath:atScrollPosition:animated:文檔在以下:

「調用此方法不會導致委託接收 scrollViewDidScroll:消息,如正常用於 編程式調用的用戶界面操作。「

1

我有同樣的問題。但我解決它通過編程後滾動到指定的行這樣做:

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

就我而言,我只是想突出顯示該行就被滾動到以後。

OR

如果你想在代碼執行更立刻又不想等待.6秒,你也許能夠循環繼續檢查你已經滾動到該行是否可見但。使用UITableView上的visibleCells屬性。當它是可見的,那麼你知道它已經完成滾動,你可以執行你的代碼。

相關問題