ios - UITableView 在 scrollViewDidEndDragging 时滚动到特定点

标签 ios uitableview scroll

我有一个可滚动的 UITableView。当用户将 UITableView 滚动一定量然后松开手指时,我希望它从顶部滚动 50 点,而不是滚动回顶部,有效地在屏幕顶部和最顶部的单元格。

目前我已经实现了scrollViewDidEndDragging,但我不知道如何设置 View 将滚动回的位置。

我尝试了以下方法,但效果不理想。

- (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

我在 UITableView 的顶部添加了一个额外的 UIView,当您滚动 UITableView 时,UIView 向下移动到 View 中。当您从屏幕上松开手指时,UITableView 会滚​​动回顶部,隐藏我添加的新 UIView

希望发生的是,当您松开手指时,UITableView 会滚​​动回到顶部,但会在距顶部 100 点处停止(这样我就可以显示一个事件向用户指示),然后在 2/3 秒后完全滚动到顶部。

最佳答案

我认为你是对的,动画并发运行是因为 ScrollView 具有减速功能。

不要使用 DidEndDraging 回调函数,试试这个:

  • (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

这只会在用户触发的动画完成后调用。

关于ios - UITableView 在 scrollViewDidEndDragging 时滚动到特定点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669339/

相关文章:

ios - 来自 NSKeyedUnarchiver 和 Any 的未归档数据的转换失败?输入 OIDAuthState

Objective-C – cellForRowAtIndexPath 导致按钮框架改变大小?

javascript - 具有多个固定行和列的 HTML 表格

随页面滚动的 CSS 子菜单

iphone - UITableView - 如何只显示包含数据的行

Jquery 滚动 1 div 其他 div 向后滚动

ios - iPhone CATextLayer 不显示其文本

iOS:拉伸(stretch) View 的大小

ios - 当父容器 View 约束以编程方式更改时,UINavigationController subview 不调整大小

ios - 如何快速在 TableView 的不同多个部分中添加多行