webview与本机iOS应用程序进行通信的任何方式?

时间:2011-05-18 15:01:05

标签: javascript objective-c cocoa-touch ios uiwebview

我有一个包含webview的iPad应用程序。 webview的页面上有一个按钮,当点击它时,需要以某种方式告诉本机应用程序关闭webview。有没有办法做到这一点?即webview中的javascript将消息传递给本机应用程序的方式,反之亦然?

谢谢!

4 个答案:

答案 0 :(得分:4)

您可以考虑使用-webView:shouldStartLoadWithRequest:navigationType:。创建一个虚拟链接,您可以识别并关闭Web视图。至于另一方面,@ Paska的回答听起来很合适。

答案 1 :(得分:2)

更改NSNotification实例字段时,可能会发生NSString次触发。使用帖子here来帮助了解如何在JavaScript和Objective-C之间进行通信。

然后,这只是通知和字符串逻辑的问题:

JavaScript到Objective-C的步骤:

  1. 按下了Web视图按钮。
  2. JavaScript会触发返回字符串的方法。
  3. 本地NSString已更新为表示已按下Web视图中的按钮(请参阅上面的帖子)。
  4. NSNotification根据字符串更改触发。
  5. Objective-C关闭Web视图。
  6. 不确定您要从Objective-C传回Web视图,但上述帖子应该有所帮助。

答案 2 :(得分:0)

您可以使用

附加任何操作
- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script

从您的网络视图中检测javascript!

以下是文档:http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html

答案 3 :(得分:0)

我认为最好的方法是使用伪图像。

JS将插入一个新图像,例如:http://example.com/callnative_1354524562763.gif?p1=v1&p2=v2

您的网页视图将覆盖NSURLCache以检索1x1透明图片并从您的网络内容中解析参数。

请注意,NSURLCache仅缓存一次,因此请为每次调用生成新的时间戳。

这种方式适用于我的项目并立即调用原生iOS应用程序。