大多数人在处理这个特定事件时遇到的问题是当有动画发生时,scrollViewDidScroll
会被触发。而我的情况恰恰相反,我认为在我的情况下不应该触发scrollViewDidScroll
。
让我进一步解释。
我正在scrollViewDidScroll
中进行动画处理,这一直很完美,直到我将UITableView移到UIView类中。
- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
// Animation code here.
NSLog(@"scrollViewDidScroll");
}
- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
NSLog(@"scrollViewDidEndDecelerating");
NSArray *indexPaths = [_myTableView indexPathsForVisibleRows];
[_myTableView scrollToRowAtIndexPath:[indexPaths objectAtIndex:0] atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
这提供了一种平滑滚动的体验,并可以自动回弹到之前的表格行。控制台可以验证
scrollViewDidScroll
事件是由于scrollToRowAtIndexPath
而触发的。控制台输出:
2014-03-31 22:21:43.346 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.379 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.429 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.462 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.479 Project[45843:a0b] scrollViewDidEndDecelerating
2014-03-31 22:21:43.496 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.513 Project[45843:a0b] scrollViewDidScroll
2014-03-31 22:21:43.529 Project[45843:a0b] scrollViewDidScroll
以下是需要翻译的内容:
1. 如何确保事件scrollViewDidScroll
只由用户交互触发,而不是由代码自动化触发?
2. 是否有另一种方法可以提供与scrollToRowAtIndexPath
相同的功能,但不会触发scrollViewDidScroll
?
问题如下:
1. 如何确保scrollViewDidScroll
事件只由用户交互触发,而不是由代码自动化触发?
2. 是否有其他方法提供与scrollToRowAtIndexPath
相同的功能,但不会触发scrollViewDidScroll
?