当scrollViewDidEndDragging时,UITableView滚动到特定点

时间:2012-05-19 22:38:18

标签: ios uitableview scroll

我有一个可滚动的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秒后完全滚动到顶部。

1 个答案:

答案 0 :(得分:2)

我认为你是对的,动画是同时运行的,因为scrollviews具有减速功能。

而不是使用DidEndDraging回调函数尝试这个:

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

只有在用户触发动画完成后才会调用此方法。