UIWebViewでサブミットされたフォームの値を取りたいな

という欲望は皆抱えておらんのか、英語情報しかないぞ。グーグル先生に「フォーム」って書いてもご丁寧に「Form」って翻訳して見つけてくれるぞ。俺は寂しい。

リンクのクリックをひっかけてのあれこれは、UIWebViewDelegateでwebView:shouldStartLoadWithRequestでサンプルが結構あるんだが、フォームのサブミットも基本これでフックするしかないようだ。

その引数のrequestの中にキーバリューでフォームデータが入ってるもんだとばかり思ったのだがどうも違うらしい。

で、ぐぐった訳だが見つけたその英語情報というのも、

そりゃ英語圏の選ばれし者共の方々はよいでしょうよ、まだ。

で結局スポルスキー大先生のお作りになられたあそこのお世話になりもうした。

つまり、UIWebViewに読み込んだHTMLに

<form name="myForm" method="POST">
  <input type="hidden" name="hoge" />
(略)
</form>

とあった場合、Objective-C側で、webView:shouldStartLoadWithRequestの中で

NSString* hoge = [webView stringByEvaluatingJavaScriptFromString:@"document.myForm.hoge.value"];

ってすりゃよいではないかという。

できた…。そりゃ出来るよそりゃ。だがしかし、釈然としない。だがしかし、要件は満たせた。だがしかし、このソースの分散しっぷりにだがしかしであった。まあよい。