私はUIWebView
を持っています。これはHTMLページを読み込みます。このページには2つのボタンがあります。ユーザーが終了ボタンをクリックできないようにするため、ページの読み込みが完了すると(webViewDidFinishLoad
が呼び出されます)、stringByEvaluatingJavaScriptFromString
を使用して、HTMLを操作してこれらのボタンの1つを削除します。また、UIWebView
のユーザー対話を無効にしてwebViewDidStartLoad
に設定し、webViewDidFinishLoad
で再び有効にします。stringByEvaluatingJavaScriptFromStringが終了したときの判断
私が見つけた問題は、stringByEvaluatingJavaScriptFromString
が完了するまでに2〜2時間かかることです。それは自分のスレッドで行われているようです。したがって、webViewDidFinishLoad
が呼び出され、UIWebView
でユーザー対話が有効になり、ユーザーが素早い場合は、stringByEvaluatingJavaScriptFromString
が終了する前に[終了]ボタンをクリックすることができます。 stringByEvaluatingJavaScriptFromString
はそれ自体のスレッドであると思われるので、完了したら(それはwebViewDidFinishLoad
と呼ばれません)、終了ボタンをタップできないようにするための唯一の方法は、UIWebViewいくつかの遅延は、信頼性がありません(どのように私は本当にどのくらいの遅延を知ることができますか?)。
stringByEvaluatingJavaScriptFromString
はスレッド上で行われていますが、完了した時点を伝える方法がありません。この問題を回避する方法についての他の提案はありますか?
EDIT:実行されているUIWebView
stringByEvaluatingJavaScriptFromString
ながら、無効にすることができ、およびJavaScriptが終了したときUIWebView
を再度有効にした場合要するに、私が知りたいです。
EDIT 2:そこは何とかそれが終了していますときに表示するためにJSエンジンをポーリングすることができます意味すると思わここに記事がありますが、私は同じこと言って、他の参照を見つけることができません。http://drnicwilliams.com/2008/11/10/to-webkit-or-not-to-webkit-within-your-iphone-app/
をEDIT 3ブラッドスミスからの答えに基づいて、私は実際には、UIWebViewは、javascriptが実行された後にロード自体を完了したことを知る必要があるようだ。私はちょうどそこに種類の遅れを置く必要があるようにますます見ています。
ここで同じ問題が発生します。あなたの解決策は何でしたか? –
私は、一定の時間がかかると仮定して、少なくともその時間だけ処理を遅らせる必要があると思います。 –
同じ問題。そうですね、これを行うにはよりよい方法が必要です。 –