2014年8月22日金曜日

UIWebViewで閲覧中のページ内の検索

UIWebViewで閲覧中のHTML内で文字検索をしたいと思い、なにかいい方法がないか探したところ、サンプルアプリを添付してくれているページがありました。
第一のポイントはstringByEvaluatingJavaScriptFromString:の使い方で、てっきりHTMLに既にあるscriptの呼び出しに使うかと思っていたのですが、この引数で渡すjavascriptHTML Documentに適用して結果を返してくれる、つまりscriptを事実上追加することができるのです。このjavascriptで適用した変数(var)やfunctionは、それ以降のメソッド呼び出しで使用することができ、グローバル変数は値も保持されます。

このサンプルのJavaScriptをもう少し単純化できないか試したのですが、書き直してはいるものの、ハイライト部分はほとんど同じ方法になっています。

このサンプルを基に作成したTheSearche2をアップします。
TheSearcher2

TheSearche2はオリジナルに次のような変更を加えています。

Storyboardを使用。
検索ヒット箇所の前後移動を追加。
初期HTMLをGoogle、Yahoo、Bingへのリンクとし、実際のWebページ内での検索を実行。
UIWebViewのサブクラスをdelegateを使用する方法に変更。

UIWebViewのドキュメントには"The UIWebView class should not be subclassed."と書かれています。

このサンプルには"UIWebViewとアプリの連携"のコードも含まれています。

0 件のコメント: