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

时间:2018-07-25 07:52:55

标签: ios objective-c uitableview uirefreshcontrol

我正在使用UIRefreshControl。我想在下拉表格视图时更改其刷新操作。当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];

2 个答案:

答案 0 :(得分:1)

1)在.h中实现委托<UITableViewDelegate, UIScrollViewDelegate>

2)将表格的.delegate设置为self

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

4)观察tableView.contentOffset.y值,然后,当它超过所需的阈值时......

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

答案 1 :(得分: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在单元格上方,然后在刷新完成后再次对其进行调整。请注意,refreshControl.endRefreshing()调用完成或您在此处执行的操作后,都必须通过refreshTable()方法调用API