我正在使用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];
答案 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
。