检测程序化UIScrollView滚动结束

问题描述:

我正在用scrollToRowAtIndexPath进行UITableViews的编程滚动,它不会触发scrollViewDidEndDecelerating。什么是检测滚动何时完成的好方法?检测程序化UIScrollView滚动结束

我问,因为在我的代码:

[tableView1 scrollToRowAtIndexPath:indexPath1 atScrollPosition:UITableViewScrollPositionBottom animated:YES]; 
[tableView2 scrollToRowAtIndexPath:indexPath2 atScrollPosition:UITableViewScrollPositionMiddle animated:YES]; 

// Additional methods here 

偶尔出现这种滚动之前,之后,其他方法大火已完成。我想使用比performSelector:afterDelay:更傻的东西。

你试过scrollViewDidEndScrollingAnimation:?它可能与您的其他代表方法有相同的问题,但值得一试。该文档具体说它叫setContentOffset:animated:scrollRectToVisible:animated:的末尾,我有一个预感可能会被用来实现scrollToRowAtIndexPath:atScrollPosition:

编辑:已确认scrollViewDidEndScrollingAnimation:scrollToRowAtIndexPath:atScrollPosition:的末尾被调用。谢谢伊恩!

+0

呵呵,我在文档中错过了这个方法。我可以确认它在scrollToRowAtIndexPath的末尾调用:(大部分时间?! - UIScrollViews对我来说似乎是越野车)并且是我正在寻找的。谢谢。 – Ian 2009-12-02 19:38:41

+0

对我来说,它经常被调用。我在一个单元格中有一个textField,如果它的焦点被立即调用,然后在动画之后再次调用......糟糕。 – 2015-08-25 22:12:33