UITextField / UITextView - iOS 11 - 高 CPU 使用率
Posted
技术标签:
【中文标题】UITextField / UITextView - iOS 11 - 高 CPU 使用率【英文标题】:UITextField / UITextView - iOS 11 - High CPU Usage 【发布时间】:2017-10-19 08:18:43 【问题描述】:我认为我在 ios 11 中使用 Objective-C 发现了一个错误。如果您创建一个包含大量文本字段或文本视图的空项目,您会看到 CPU 使用率失控。通过 Instruments,我发现即使您解除分配文本字段,使光标/插入符号闪烁的事件也会继续被调用。
我有一个大项目,表格的每一行都有 2 个文本字段,但我真的不知道如何解决它。具有讽刺意味的是,即使您没有看到闪烁的光标,也会调用此事件。
有人遇到过这个问题吗?
这就是所谓的:
Main Thread
start
0x100b2fcde
UIApplicationMain
GSEventRunModal
CFRunLoopRunSpecific
_CFRunLoopRun
_CFRunLoopDoTimer
_DFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION_
_NFFireTimer
-[UITextSelectionView caretBlinkTimerFired:]
48% - [UITextSelectionView showCaret:]
48% -[UITextSelectView hideCaret:]
附: 我在 iOS 10.3 上尝试了相同的程序,它运行良好。
【问题讨论】:
我在 iOS 11.0.3 上测试我的应用时遇到了同样的错误。我用仪器分析了 CPU 使用率,发现每次 UITextView 聚焦时,都会不断调用 UITextView 方法并增加 CPU 使用率。不幸的是,等待下一个 iOS 版本。 我在 Apple Bug Reporter 官方网站上打开了一份报告,在这里我们正在讨论它:forums.developer.apple.com/thread/89616?sr=stream&ru=593697 【参考方案1】:在 Apple 修复它之前,我看到用空白字符串 @" " 替换文本字段文本可以解决问题。
【讨论】:
是的,我在 Apple 论坛上看到了它,仍然希望他们能尽快修复它,因为我有大量的 textview/textfields。谢谢!【参考方案2】:根据我的测试,随着 iOS 更新 11.1,问题似乎得到了解决。通过此次更新,当 UITextView 或 UIExField 失去焦点时,CPU 使用率会降低。
【讨论】:
在 11.1 测试版中也是如此。我会试试官方版本的。以上是关于UITextField / UITextView - iOS 11 - 高 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章
为啥 UITextview 没有 UITextField 之类的占位符属性 [重复]
在 uitextfield 和 uitextview 上添加内阴影
更改 UITextField 和 UITextView 光标/插入符号颜色
IQKeyboardManager 从 UITextField 导航到 UITextView