2010-03-01 82 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属性。当它是可见的,那么你知道它已经完成滚动,你可以执行你的代码。

相关问题