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

Pull to refresh default refresh level change

我正在使用 UIRefreshControl。我想更改其在下拉 tableview 时的刷新操作。当tableview轻微下拉时需要刷新,因为我的tableview高度太小,下拉不够调用refresh方法

如何更改?

我简单地添加了 UIRefreshControl 如下:

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

1) 在.h

中实现委托<UITableViewDelegate, UIScrollViewDelegate>

2) 将你的 table 的 .delegate 设置为 self

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

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

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

因为我不认为你可以改变你必须移动多少距离才能启动刷新的行为,所以我只会在用户滚动足够多时手动触发它,比如:

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

您可能还需要在刷新处于活动状态时适当地偏移 table 视图,以便 UIActivityIndicator 位于您的单元格上方,然后在完成刷新后再次调整它。请注意,一旦 API 调用完成或无论您在那里做什么,您都必须在 refreshTable() 方法中调用 refreshControl.endRefreshing()...