当 UIsearchBar 点击和键盘显示时在事务中调用

Posted

技术标签:

【中文标题】当 UIsearchBar 点击和键盘显示时在事务中调用【英文标题】:Called within transaction When UIsearch Bar clicked and keyboard showed 【发布时间】:2018-01-08 05:17:48 【问题描述】:

我做了一个 ViewController,其中有一个按钮和 UITextfield,当我单击按钮时,会显示带有 UISearchBar 的 UITableViewController 并显示语言列表。我的问题是当我第一次运行应用程序时单击按钮,然后单击控制台上的 UISearchBar 我有这个警告

SearchDebugApp[2237:558457] +[CATransaction synchronize] 在事务中调用 SearchDebugApp[2237:558457] +[CATransaction synchronize] 在事务中调用 SearchDebugApp[2237:558457] +[CATransaction synchronize] 在事务中调用 SearchDebugApp[2237:558457] +[CATransaction synchronize] 在事务中调用

此消息仅在我第一次单击 UISearchBar 时发生,该应用程序似乎没有任何问题,所以我现在不知道为什么会发生这种情况以及我应该如何调试它。

我搜索了这条消息警告我发现当主线程上发生多个动画时会发生这种情况,但在我的应用程序中唯一发生的动画是显示键盘时。

You can clone project here

【问题讨论】:

这看起来像是 UISearchController 或 UINavigationController(或两者的组合)中的错误。我在 UINavigationController 中创建了一个只有 UIViewController 的测试项目,并添加了 UISearchController,当您第一次点击搜索栏时,它仍然会给出相同的四个警告。它似乎不会引起问题,我看不出有什么办法可以摆脱它。 首先感谢您花时间帮助他人,这真的很感激 :) 其次,您认为我应该忽略这个错误吗?你认为我的应用会因为这些消息而被拒绝吗?谢谢! 我会感到非常惊讶,因为它们只是内部警告,我们收到了一些这样的消息,我们的应用从未因此被拒绝。 (抱歉耽误了我 2 小时的车程) 没问题!好的,很高兴再次知道谢谢 @cczak 我今天用 ios 11.3 SDK 试了一下。同样在这里。 (导航控制器与 tableViewController 和 searchController searchBar 一起) 【参考方案1】:

看起来即使在 Apple 示例项目中也会发生这种情况: Table Search with UISearchController example

您可以下载项目并运行它,您将看到相同的 4 [CATransaction 同步] 在事务中调用

【讨论】:

以上是关于当 UIsearchBar 点击和键盘显示时在事务中调用的主要内容,如果未能解决你的问题,请参考以下文章

UISearchBar 取消

UISearchbar clearButton 强制键盘出现

显示键盘时在 iPad 上的表单中调整表格视图的大小

UISearchBar - 触摸时键盘不显示

键盘显示时在 UIViewController 中设置 Tableview y 位置

当键盘出现时,导航栏内的 UISearchBar 会受到尊重