【发布时间】:2014-05-11 17:37:01
【问题描述】:
所以人们对这个特定事件的大多数问题是在动画发生时让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?
【问题讨论】:
-
据我所知,如果没有调用委托方法,您将无法滚动。您可以做的一件事是通过以编程方式滚动,您可以设置一个标志并在委托方法中使用它。如果您以编程方式滚动重置标志。我希望这会对你有所帮助..
标签: ios objective-c uitableview ios7 uiscrollview