html / js interactive中的iphone原生应用

时间:2010-06-20 20:56:48

标签: javascript objective-c

是否可以在Objective-C和JavaScript之间进行通信?从Objective-C调用JavaScript函数。从JavaScript调用Objective-C函数?如果是这样的话?

3 个答案:

答案 0 :(得分:0)

如果您使用UIWebView来托管您的html + javascript,您可以使用

 stringByEvaluatingJavaScriptFromString:
方法来评估javascript片段(并从中调用您的JS函数)。
从javascript调用ObjC代码会很复杂:因为我知道你只能从ObjC调用JS代码,而不是反之亦然。
您可以定期从ObjC调用某个JS函数,并使用返回的字符串选择要在ObjC中执行的某个操作 我认为,有点像黑客,但我没有其他想法。

答案 1 :(得分:0)

使用phonegap。

phonegap的主要目标是允许js应用程序在iphone设备上运行。

IT本质上使用了stringByEvaluatingJavaScriptFromString:如上所述,但它有一整套很酷的东西,允许phonegap js类调用本机obj-c库。这意味着这些特定的js函数以obj-c速度运行。 phonegap音频对象就是一个很好的例子。

然而,它有一些很好的功能,可以加倍努力。您可以使用插件创建自己的自定义obj-c函数,并从js中调用它们。

你也可以用obj-c调用js:  [webView stringByEvaluatingJavaScriptFromString:'alert('Hello;'];

注意webView是phonegap UIwebview的句柄。

您可以在phonegap插件和phonegap应用代表中自动获取此处。

但不确定如何从非手机上课中调用它,例如openfeint。

这就是我现在要问的问题。

答案 2 :(得分:0)

您可以使用UIWebView的shouldStartLoadWithRequest:委托方法。

此时,从您想要调用本机方法的位置,准备一个假的URL,如fake://abc?par1=val1&par2=val2,并使用虚假请求加载Web视图。
上面提到的委托方法将捕获请求,您可以在那里在协议的基础上处理请求。如果它是假的,那么做你想做的任何事情并从委托方法返回NO,否则返回YES以正常加载请求。