内容可编辑UIWebView变得懒惰,直到没有响应

时间:2012-09-19 20:26:22

标签: ios uiwebview usability contenteditable

在第3代iPad(wifi / AT& T蜂窝)的内容可编辑UIWebView中输入文本几分钟后,键盘反应越来越慢,直到应用程序不再可用。 (在iOS 5.x和iOS6下测试)。这个bug已经提交给Apple了,我没有得到任何消息。这是问题所在。

在内容可编辑的UiWebView中,用户开始在键盘上输入内容。您可以键入2到10分钟,也可以键入一些文本,然后在应用程序仍处于前台时暂停键入

经过一段时间的延迟,键盘的反应时间变得越来越慢,直到完全没有反应。应用程序没有崩溃(添加一个断点使应用程序暂停),但是无法输入文本,除了强制退出和重新加载应用程序之外没有其他解决方案。

  1. iOS 6模拟器上不会出现此问题。 iPad(第三代)今年早些时候在法国购买,配备64GB Wifi和Cellular / AT& T

  2. iOS 5中也会出现此问题。

  3. 我的应用创建了一个每0.8秒触发一次的NSTimer来调用一个专用于垂直滚动的scroll:方法(如果需要)。减少NSTimer发射延迟会加速问题的唤醒。

  4. 禁用scroll:方法时,不会出现问题。似乎在UIWebView中调用的javascript创建了永不停止的进程,因此需要越来越多的CPU时间,因此应用程序最终会变得无响应(参见第5点)。

    1. 在Instruments应用程序中使用时间分析,我注意到当应用程序正常运行时,它是[WebFrame(WebInternal)stringByEvaluatingJavaScriptFrom String:forceUserGesture]函数,这是主要的耗时方法(每次调用大约需要6到8毫秒)滚动:方法。但是当应用程序反应性开始减少时,三种方法往往主导时间配置文件,消耗时间继续快速增加,时间分析器图形显示全时活动而iPad上没有按键这些方法在这里给出了相关的数字:
    2. [WebVisiblePosition withinTextUnitOfGranularity:inDirectionIfAtBoundary] (在用户不活动10分钟后,总运行时间的40%)

      [WebHTMLView(WebNSTextInputSUpport)insertText:] (在用户不活动10分钟后,总运行时间的29%)

      [WebVisiblePosition enclosingTextUnitOfGranularity:inDirectionIfAtBoundary] (在用户不活动10分钟后,总运行时间的16%)

      是否有人必须处理此类问题。是否可以针对该问题设计转机?

0 个答案:

没有答案