拉动刷新默认刷新级别更改
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中实现代理<UITableViewDelegate, UIScrollViewDelegate>
2) 将表的 .delegate 设置为 self
3)检查scrollViewDidScroll
方法(tableView会调用它)
4) 观察tableView.contentOffset.y
值,然后,当它超过您想要的阈值时......
5) 使用setContentOffset:
MUCH 手动调整 tableView 以激活刷新,而无需用户尝试将其拉到那么远。
【讨论】:
以上是关于拉动刷新默认刷新级别更改的主要内容,如果未能解决你的问题,请参考以下文章