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)
但它仍然忽略该呼叫。
事实证明,在我的情况下,问题是用于添加的代码UIRefreshControl被多次命中并创建了多个 refreshControl,因此endRefreshing被调用的实例与UIRefreshControl启动下拉刷新的实例不同.
我的愚蠢错误。
对我来说设置UITableView contentOffset为零,有效
在Swift 3.0 中
refreshControl.endRefreshing()
self.yourTableView.contentOffset = CGPoint.zero
Run Code Online (Sandbox Code Playgroud)
您可以停止refreshControl并tableview使用动画重置位置
self.refreshControl.endRefreshing()
UIView.animate(withDuration: 0.5, animations: {
yourTableview.contentOffset = CGPoint.zero
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3633 次 |
| 最近记录: |