使用 UIScrollView 分页拉动刷新

Posted

技术标签:

【中文标题】使用 UIScrollView 分页拉动刷新【英文标题】:Pull to Refresh with UIScrollView Pagination 【发布时间】:2013-10-12 04:56:43 【问题描述】:

在我的应用程序中,我有一个滚动视图,用户可以使用拉动刷新来使用基于 EGORefreshTableHeaderView 的拉动刷新的自定义实现进行更新。它在没有分页的情况下完美地工作,但是由于可以理解的原因,滚动视图反弹回页面并且不会保持锁定在拉动刷新上,因为它太小了它不会注册为一个可以滚动的页面.

有没有一种方法可以让我以一种感觉和看起来直观的方式解决这个问题?

【问题讨论】:

【参考方案1】:

今天遇到同样的问题,找到了解决办法:

原因是 contentOffset 与您的分页不匹配,因为加载视图的大小与您的页面大小不同,因此滚动视图功能检测到并滚动到当前页面。

对我来说,最好的办法是在触发 pulltorefresh 时禁用分页(在使用滚动视图的 contentOffset 的函数之前),如果在滚动视图上启用了分页,则在刷新后恢复它

这是我对我使用的库所做的更改的示例

switch (newState) 
    case SVPullToRefreshStateAll:
    case SVPullToRefreshStateStopped:
        [self resetScrollViewContentInset];
        if (self.isPaginationEnabled) 
            self.scrollView.pagingEnabled = YES;
        
        break;

    case SVPullToRefreshStateTriggered:
        if (self.scrollView.pagingEnabled) 
            self.isPaginationEnabled = YES;
            self.scrollView.pagingEnabled = NO;
        
        break;

    case SVPullToRefreshStateLoading:
        [self setScrollViewContentInsetForLoading];

        if(previousState == SVPullToRefreshStateTriggered && pullToRefreshActionHandler)
            pullToRefreshActionHandler();

        break;

【讨论】:

以上是关于使用 UIScrollView 分页拉动刷新的主要内容,如果未能解决你的问题,请参考以下文章

重置分页以重新获取拉动时的默认变量以刷新抛出光标警告?

是否可以在没有表格视图的情况下创建拉动刷新?

UIScrollView 一个分页器

navigationView中如何补充UIScrollView?

UITableView分页,将显示无限加载

如何创建允许 UIImageViews 分页和缩放的 UIScrollView?