我有一个可滚动的UITableView
。当用户滚动UITableView
一定数量然后释放他们的手指,而不是滚动回到顶部时,我希望它从顶部滚动50个点,有效地在顶部之间留下50个点的间隙屏幕和最顶层的单元格。
目前我已实施scrollViewDidEndDragging
,但我不知道如何设置视图滚动回去的位置。
我已尝试过以下操作,但它无法正常工作。
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
// If scrolled over 100 points
if(-100 > (double)self.tableView.contentOffset.y) {
[self.tableView setContentOffset:CGPointMake(0, -50) animated:YES];
}
}
上面的代码会导致奇怪的闪烁,就像动画同时运行一样,但我不确定。
任何帮助都将不胜感激。
我正在根据这篇文章实现“下拉刷新”功能: https://stackoverflow.com/a/6392145/120615
我在UIView
的顶部添加了额外的UITableView
,当您滚动UITableView
时,UIView
向下移动到视图中。当您从屏幕上松开手指时,UITableView
会向后滚动到顶部,隐藏我添加的新UIView
。
我喜欢发生的事情是,当你松开手指时,UITableView
会滚动到顶部,但会从顶部停止100点(所以我可以显示活动指示器到用户)和然后在2/3秒后完全滚动到顶部。
答案 0 :(得分:2)
我认为你是对的,动画是同时运行的,因为scrollviews具有减速功能。
而不是使用DidEndDraging回调函数尝试这个:
只有在用户触发动画完成后才会调用此方法。