UIRefreshControl站提出申请不活跃
问题描述:
后纺我用UIRefreshControl在一个UITableView:UIRefreshControl站提出申请不活跃
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh)
forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
随着刷新处理:
-(void)refresh {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
// (...some long running operation...)
dispatch_async(dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
});
}
在长时间运行的操作我使应用程序不活动按Home键。之后,我再次使应用程序处于活动状态。微调器冻结(停止旋转)并且无法将其返回到初始状态。
如何解决?
答
我认为这是一个有点延迟的答案,但今天我看到了类似的问题在iOS 7,iOS 6的继续旋转,
这里是这个
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(self.refreshControl.isRefreshing) {
CGPoint offset = self.tableView.contentOffset;
[self.refreshControl endRefreshing];
[self.refreshControl beginRefreshing];
self.tableView.contentOffset = offset;
}
}
将停止和一点点的解决方法再次开始旋转,但它只发生在ios7我,所以也许你应该检查不这样做对iOS6的
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
if(self.refreshControl.isRefreshing && [[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {
CGPoint offset = self.tableView.contentOffset;
[self.refreshControl endRefreshing];
[self.refreshControl beginRefreshing];
self.tableView.contentOffset = offset;
}
}
答
这对我来说
01什么工作夫特3和夫特4:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
if self.refreshControl?.isRefreshing == true {
let offset = self.tableView.contentOffset
self.refreshControl?.endRefreshing()
self.refreshControl?.beginRefreshing()
self.tableView.contentOffset = offset
}
}
SWIFT 2.3:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
if self.refreshControl?.refreshing == true {
let offset = self.tableView.contentOffset
self.refreshControl?.endRefreshing()
self.refreshControl?.beginRefreshing()
self.tableView.contentOffset = offset
}
}
答
这仍然是在iOS11一个问题。该解决方案需要修改一下,否则刷新控制将旋转太快
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
if(self.refreshControl.isRefreshing) {
CGPoint offset = self.tableView.contentOffset;
[self.refreshControl endRefreshing];
// Delay the restart
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.05 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self.refreshControl beginRefreshing];
self.tableView.contentOffset = offset;
});
}
}
谢谢 - 这解决了它!但是:当动画停止时,桌面视图中有一个短暂的闪烁。似乎以某种方式内容偏移设置不正确。无论如何:它的工作原理也没有为我重设偏移量。 – beseder
@beseder是否解决了闪烁问题? – 6axter82