拉动刷新默认刷新级别更改

Posted

技术标签:

【中文标题】拉动刷新默认刷新级别更改【英文标题】:Pull to refresh default refresh level change 【发布时间】:2018-07-25 07:52:54 【问题描述】:

我正在使用UIRefreshControl。我想在下拉表格视图时更改其刷新操作。当 tableview 轻微下拉时,我需要刷新,因为我的 tableview 高度很小,我不能下拉到足以调用刷新方法。

如何更改?

我只是添加了UIRefreshControl,如下:

self.refreshControl = [[UIRefreshControl alloc]init];
_refreshControl.tintColor = [UIColor redColor];
[self.tweetTable addSubview:self.refreshControl];
[self.refreshControl addTarget:self action:@selector(refreshTable) forControlEvents:UIControlEventValueChanged];

【问题讨论】:

也许我不明白有什么问题......但你刚刚在同一个帖子中问过并回答过吗? 不...没有回答...我只是显示我的代码。我需要知道我该怎么做? 尝试在scrollViewDidScroll函数中检查scrollView的contentOffset UIRefreshControl 不可能吗? 你有多少行? 【参考方案1】:

由于我认为您无法更改启动刷新所需移动距离的行为,因此我会在用户滚动足够多时手动触发它,例如:

func scrollViewDidScroll(_ scrollView: UIScrollView) 
    guard !refreshControl.isRefreshing else 
        return//do nothing if we are already refreshing
    

    //set your threshold to whatever feels ok (I used -30 here)
    if scrollView.contentOffset.y < -30 
        refreshTable()
        refreshControl.beginRefreshing()
    

您可能还需要在刷新处于活动状态时正确地使用偏移表视图,以便UIActivityIndicator 位于您的单元格上方,然后在完成刷新时再次调整它。请注意,一旦 API 调用完成或您在那里执行的任何操作,您必须在 refreshTable() 方法中调用 refreshControl.endRefreshing()...

【讨论】:

【参考方案2】:

1) 在.h中实现代理&lt;UITableViewDelegate, UIScrollViewDelegate&gt;

2) 将表的 .delegate 设置为 self

3)检查scrollViewDidScroll方法(tableView会调用它)

4) 观察tableView.contentOffset.y 值,然后,当它超过您想要的阈值时......

5) 使用setContentOffset:MUCH 手动调整 tableView 以激活刷新,而无需用户尝试将其拉到那么远。

【讨论】:

以上是关于拉动刷新默认刷新级别更改的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 UIRefreshControl 的字体和颜色

刷新页面后,会话范围的 selectOneMenu 值更改回默认值 [重复]

使用 UIScrollView 分页拉动刷新

拉动刷新时旋转图像

工作拉动以禁用反弹刷新

适当拉动刷新