UIWebViewで特定のイベントが検出されたときにobjective-cにコールバックを取得する方法はありますか? JavaScriptはObjective-Cにコールバックを送信できますか?
更新-UIWebViewを使用しないでください。 WKWebViewを使用するか、Safari View Controllerを使用します(ニーズに適合し、iOS 9向けに構築している場合)。
ただし、UIWebViewを使用する必要がある場合は、UIWebViewデリゲートで webView:shouldStartLoadWithRequest:navigationType: の実装を提供します
HTMLファイルまたはJavaScriptファイルに、カスタムスキームにURLを送信する関数を追加します(読みやすくするために、カスタムスキームは必要ありません)。送信されたすべてのURLがObjective-Cメソッドの実装に渡され、必要な操作を実行できます。
実際のコードで「bpapa」によるソリューションを説明するだけです。
警告:テストされていないコード
このメソッドをUIWebViewのデリゲートに実装します...
-(BOOL) webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
if ( [[[inRequest URL] scheme] isEqualToString:@"callback"] ) {
// Do something interesting...
return NO;
}
return YES;
}
...次に、次のようにwebwiebにリンクを配置します。
<a href="callback:whatever">Click me</a>
そして、それはあなたのコールバックコードをアクティブにするはずです。もちろん、プレーンリンクの代わりにJavaScriptでトリガーすることもできます。