第 3 世代 iPad (wifi/AT&T セルラー) でコンテンツ編集可能な UIWebView にテキストを数分間入力すると、アプリケーションが使用できなくなるまで、キーボードの反応がますます遅くなります。(iOS 5.x および iOS6 でテスト済み)。このバグは Apple に提出されましたが、ニュースはありません。これが問題です。
コンテンツ編集可能な UiWebView で、ユーザーはキーボードでの入力を開始します。2 ~ 10 分間入力するか、テキストを入力してから、アプリケーションがまだフォアグラウンドである間に入力を一時停止します。
少し遅れると、キーボードの反応時間がどんどん遅くなり、まったく反応しなくなります。アプリケーションはクラッシュしませんが (ブレークポイントを追加するとアプリが一時停止します)、テキストを入力できなくなり、アプリケーションを強制終了してリロードする以外に解決策はありません。
この問題は、iOS 6 シミュレーターでは発生しません。iPad (第 3 世代) は今年初めにフランスで購入され、64 GB の Wi-Fi と Cellular/AT&T を搭載
この問題は iOS 5 でも発生します。
私のアプリは、垂直スクロール専用の scroll: メソッドを呼び出すために 0.8 秒ごとに起動される NSTimer を作成します (必要な場合)。NSTimer の起動遅延を減らすと、問題の発生が加速します。
scroll:method を無効にすると、問題は発生しません。UIWebView で呼び出された JavaScript は、決して停止しないプロセスを作成するため、CPU 時間がますますかかり、最終的にアプリが応答しなくなるようです (ポイント 5 を参照)。
- Instruments アプリケーションで時間プロファイリングを使用すると、アプリケーションが正常に機能している場合、[WebFrame(WebInternal) stringByEvaluatingJavaScriptFrom String:forceUserGesture] 関数が主な時間のかかるメソッドであることに気付きました (スクロールの呼び出しごとに約 6 ~ 8 ミリ秒)。 : メソッド. しかし、アプリケーションの反応性が低下し始めると、3 つの方法が時間プロファイルを支配する傾向があり、消費される時間は急速に増加し続け、iPad でキーが押されていない間、時間プロファイラーのグラフィックはフルタイムのアクティビティを示します.関連する図とともにここに示します。
[WebVisiblePosition withinTextUnitOfGranularity:inDirectionIfAtBoundary] (合計実行時間の 40%、ユーザーが 10 分間操作を行わなかった後)
[WebHTMLView(WebNSTextInputSUpport) insertText:] (合計実行時間の 29%、ユーザーが 10 分間操作を行わなかった後)
[WebVisiblePosition enclosingTextUnitOfGranularity:inDirectionIfAtBoundary] (合計実行時間の 16%、ユーザーが 10 分間操作を行わなかった後)
誰かがそのような問題に対処しなければなりませんでしたか。その問題に対してターンアラウンドを設計することはできますか?