`UIRefreshControl endRefreshing` 不起作用
Posted
技术标签:
【中文标题】`UIRefreshControl endRefreshing` 不起作用【英文标题】:`UIRefreshControl endRefreshing` not working 【发布时间】:2016-04-19 18:59:49 【问题描述】:我的应用中有一个下拉刷新功能,据我所知,这是设置“正常方式”:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refreshControl addTarget:self action:@selector(refreshPage) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
令人耳目一新的部分工作正常。完成刷新后,我打电话给
[self.refreshControl endRefreshing]
此时,它似乎忽略了该调用并继续显示下拉刷新“间隙”,只是没有微调器:
(我在该行确实有一个断点来验证 endRefreshing
IS 实际被调用)
如果我用拇指摇动页面(将其轻轻拉下,但不要拉得足够远以触发另一次拉动刷新),它会自行修复并弹回原位。但是为什么当我打电话给[self.refreshControl endRefreshing]
时它没有回弹?有没有办法以编程方式强制它弹回?
我也尝试过延迟 endRefreshing
调用:
[self.refreshControl performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.0]
但它仍然忽略调用。
【问题讨论】:
如果您使用的是 IB,您是否将 UITableView 'Refreshing' 属性设置为 Enabled? @fbara - 我正在使用情节提要。我没有通过 xcode UI 或代码看到“刷新”属性... 点击 UITableViewController。在 Attributes Inspector 中有一个名为“Refreshing”的设置,并在下拉菜单中选择“Enabled”。 【参考方案1】:您可以停止 refreshControl
并使用动画重置 tableview
位置
self.refreshControl.endRefreshing()
UIView.animate(withDuration: 0.5, animations:
yourTableview.contentOffset = CGPoint.zero
)
【讨论】:
【参考方案2】:事实证明,就我而言,问题在于用于添加UIRefreshControl
的代码被多次点击并创建了多个refreshControl,因此endRefreshing
在@987654323 的不同实例上被调用@ 比启动下拉刷新的那个。
我犯了一个愚蠢的错误。
【讨论】:
【参考方案3】:对我来说将UITableView contentOffset
设置为零,有效
在 Swift 3.0
refreshControl.endRefreshing()
self.yourTableView.contentOffset = CGPoint.zero
【讨论】:
【参考方案4】:调用refreshControl.endRefreshing()
属性isRefreshing = false
后,还是可以呈现的。问题出在图层中 - 而其他动画正在进行中或具有刷新控制的视图控制器不可见(显示其他 vc 或键窗口更改为另一个)。下面的代码帮助我解决了这个问题
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) [weak self] in
guard let strongSelf = self else return
if strongSelf.refreshControl.isRefreshing
strongSelf.refreshControl.endRefreshing()
else if !strongSelf.refreshControl.isHidden
strongSelf.refreshControl.beginRefreshing()
strongSelf.refreshControl.endRefreshing()
【讨论】:
以上是关于`UIRefreshControl endRefreshing` 不起作用的主要内容,如果未能解决你的问题,请参考以下文章