首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransaction完成块永不着火

CATransaction完成块永不着火
EN

Stack Overflow用户
提问于 2014-12-14 14:07:11
回答 1查看 2K关注 0票数 9

为什么这个CATransaction的完成块从不触发?

代码语言:javascript
复制
[CATransaction begin];
[CATransaction setCompletionBlock:^{
    // table animation has finished
    NSLog(@"why does this section never execute?");
}];
[self.tableView beginUpdates];
[self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:self.currentFeedItems.count inSection:0]] withRowAnimation:UITableViewRowAnimationFade];
[self.tableView endUpdates];
[CATransaction commit];

tableview动画工作,但完成块从未执行。Apple文档中说,完成块是保证执行的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-14 17:01:16

哦,天哪,这太模糊了,我很惊讶我发现了这个问题。

正在重新加载的单元格包含一个工作正常的UIActivityIndicatorView。当单元格重新加载时,它隐式地重新绘制表单元格,然后在表单元格中的该进程中发生startAnimating调用。不知何故,startAnimating调用会干扰CATransaction完成块。

当我将startAnimating调用包装在一个dispatch_async块中时,问题就消失了:

代码语言:javascript
复制
dispatch_async(dispatch_get_main_queue(), ^{
    [self.loadingInd startAnimating];
});
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27470130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档