iOS-UIWebViewで表示したサイトのフォーカスを取得したいです。


現在iOSアプリ開発の勉強をすすめています。
UIWebViewにwebサイトを表示させ、テキストボックス等にフォーカスが当たった場合に、フォーカスされているinput要素をobjective-c側で取得したくて以下のように記述してみましたが、うまく取得できません。

NSString *hoge = [_webView stringByEvaluatingJavaScriptFromString:@"document.activeElement.id;"];
NSString *hoge = [_webView stringByEvaluatingJavaScriptFromString:@"document.getSelection().focusNode;"];

どのように実装すれば取得できるのでしょうか?
#表示するwebサイトのinput要素の内容は、アプリ側で知らなくてもいいようにしたいです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2013/04/30 00:28:28
  • 終了:2013/05/07 00:30:05

ベストアンサー

id:gizmo5 No.1

gizmo5回答回数484ベストアンサー獲得回数1382013/04/30 11:59:19

ポイント500pt

フォーカスされているinput要素の何を取得したいんでしょうか?
入力されているデータのことだったら、こんな感じの処理ではどうでしょう。

NSString *js = @"document.activeElement.value";
NSString *hoge = [_webView stringByEvaluatingJavaScriptFromString:js];

普通のdiv要素などにフォーカスが当たっているとundefinedという文字列が返されます。

他6件のコメントを見る
id:xxkubouxx

>bookmarkletは自分で実行したい環境でやってみないと意味が無いのでMACではなくiphoneもしくはipadなど、実行したいアプリが動く環境で試してみてください。
そうですよね。。。
実行したところ問題なく動作しました。

>stringByEvaluatingJavaScriptFromString は、いつどのようなタイミングで呼び出しているのでしょうか
キーボードが表示されるタイミングで呼び出しています。
具体的にはUIKeyboardWillShowNotificationのタイミングで実装しています。

ここまで書いていて気付いてUIKeyboardDidShowNotificationに変更したところ無事動作しました!
単純な事でしたが視野が狭くなっていたようです。。
本当にありがとうございます。

2013/05/04 01:51:31
id:gizmo5

うまくいって良かったですね。

2013/05/06 08:48:36

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません