我正在标签栏中执行一个操作,即(当点击按钮两次时)它应该执行,
[root.FeedTableView setContentOffset:CGPointZero animated:YES];
但我无法在其中执行它,
dispatch_async(dispatch_get_main_queue(), ^{
});
因为什么也没发生,所以我尝试使用,
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
});
并且工作正常,但在这种情况下会弹出线程运行时错误。
检查下面的代码并提出补救措施,以解决发生在
的线程问题[root.FeedTableView setContentOffset:CGPointZero animated:YES];
(void)processBtn:(UIButton *)sender {
NSLog(@"sender:%li",(long)sender.tag);
if (self.selectedViewController==self.viewControllers[0] && sender.tag==1){
NewsFeedViewController * root = [newsFeedSceneController.viewControllers firstObject];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
[root.FeedTableView setContentOffset:CGPointZero animated:YES];
dispatch_async(dispatch_get_main_queue(), ^{
if(!root.isUpdatingTableView)
[root.refreshControl endRefreshing];
});
});
}
最佳答案
正如 Jon Rose 所说, ScrollView 行:
[root.FeedTableView setContentOffset:CGPointZero 动画:YES];
和 UIrefresh 控制线:
[root.refreshControl endRefreshing];
是主要冲突。
需要做的就是删除 UIrefreshcontrol 行并添加非 UI 相关行[root RefreshView];
关于ios - UIScrollView setContentOffset :animated must be used from main thread only,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55021631/