UIRefreshControl endRefreshing不起作用

Tro*_*roy 2 objective-c ios uirefreshcontrol

据我所知,我的应用程序中有一个强制刷新功能,即设置“常规方式”:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];

[refreshControl addTarget:self action:@selector(refreshPage) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)

令人耳目一新的部分工作正常。完成刷新后,我致电

[self.refreshControl endRefreshing]
Run Code Online (Sandbox Code Playgroud)

在这一点上,它似乎忽略了该调用,并继续显示拉动刷新的“间隙”,仅在没有微调器的情况下:

拉刷新贴

(我在该行确实有一个断点,以验证是否确实调用了endRefreshing IS

如果我用拇指摇动页面(将其略微拉下而不将其拉到足以触发另一个拉动刷新的位置),它将自动修复并弹回原位。但是为什么我打电话时不回头[self.refreshControl endRefreshing]?有什么办法可以以编程方式强制其弹回吗?

我也尝试过endRefreshing延迟通话:

[self.refreshControl performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.0]
Run Code Online (Sandbox Code Playgroud)

但它仍然忽略该呼叫。

Tro*_*roy 5

事实证明,在我的情况下,问题是用于添加的代码UIRefreshControl被多次命中并创建了多个 refreshControl,因此endRefreshing被调用的实例与UIRefreshControl启动下拉刷新的实例不同.

我的愚蠢错误。


art*_*mal 5

对我来说设置UITableView contentOffset为零,有效

Swift 3.0 中

refreshControl.endRefreshing()
self.yourTableView.contentOffset = CGPoint.zero
Run Code Online (Sandbox Code Playgroud)


Mar*_*uch 5

您可以停止refreshControltableview使用动画重置位置

self.refreshControl.endRefreshing()

UIView.animate(withDuration: 0.5, animations: {
    yourTableview.contentOffset = CGPoint.zero
})
Run Code Online (Sandbox Code Playgroud)