UIWebView中的Javascriptcallback到C / Objective-C

有一种方法可以在UIWebView中检测到某个事件时调用objective-c吗? Javascript可以发送一个callback到Objective-C吗?

更新 – 不要再使用UIWebView。 使用WKWebView,或更好的(如果它适合您的需求,你正在build立的iOS 9),一个Safari视图控制器。

但是如果您必须使用UIWebView,请在您的UIWebView委托中为webView提供一个实现:shouldStartLoadWithRequest:navigationType:

在您的HTML或Javascript文件中,添加将URL发送到自定义scheme的函数(为了便于阅读,不需要自定义scheme)。 所有发送的URL将被传递给你的Objective-C方法实现,然后你可以做你想要的。

只是用实际的代码来说明“bpapa”的解决scheme:

警告:未经testing的代码

在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> 

它应该激活你的callback代码。 显然,你可以触发它与JavaScript而不是一个简单的链接。