+[CATransaction synchronize] 搜索时在事务内调用

Posted

技术标签:

【中文标题】+[CATransaction synchronize] 搜索时在事务内调用【英文标题】:+[CATransaction synchronize] called within transaction when search 【发布时间】:2018-05-03 17:47:49 【问题描述】:

我实现了一个searchController并添加到了navigationItem中。

这是代码:

var searchController = UISearchController(searchResultsController: nil)
searchController.obscuresBackgroundDuringPresentation = false

definesPresentationContext = true
searchController.searchResultsUpdater = self
searchController.searchBar.placeholder = NSLocalizedString("Search", comment: "")
searchController.hidesNavigationBarDuringPresentation = true

// Layout
searchController.searchBar.barTintColor = UIColor.groupTableViewBackground
navigationItem.searchController = searchController

当我点击 searchBar 写东西时,控制台会出现这个警告:

NameOfProject[9238:211033] +[CATransaction synchronize] 在内部调用 交易 NameOfProject[9238:211033] +[CATransaction 同步] 在事务 NameOfProject[9238:211033] +[CATransaction 中调用 同步] 在事务 NameOfProject[9238:211033] 中调用 +[CATransaction synchronize] 在事务中调用

请问有人知道怎么解决吗?

提前致谢!!

【问题讨论】:

【参考方案1】:

存在一个相关的post。

这篇文章指出,这种行为可能是 ios 端的一个错误,因为它也出现在一个仅包含单个 UIViewController 的最小示例中,该 UIViewController 包含一个 UISearchController 并嵌入在 UINavigationController 中(请参阅Upholder Of Truth 的评论)。

【讨论】:

感谢您的回答,我也没有找到删除此警告的方法。这似乎真的是iOS方面的一个错误......

以上是关于+[CATransaction synchronize] 搜索时在事务内调用的主要内容,如果未能解决你的问题,请参考以下文章

CATransaction 动画问题

CATransaction 完成块成功或失败

CATransaction 和 CAAnimation 有啥区别?

我可以取消 CATransaction 完成块吗?

iOS 在调用完成块之前会在 viewDidDisappear 之后等待 CATransaction

CALayer.opacity 在 CATransaction 内没有动画