Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript html/js交互中的iphone本机应用程序_Javascript_Objective C - Fatal编程技术网

Javascript html/js交互中的iphone本机应用程序

Javascript html/js交互中的iphone本机应用程序,javascript,objective-c,Javascript,Objective C,Objective-C和JavaScript之间可以通信吗?从Objective-C调用JavaScript函数。从JavaScript调用Objective-C函数?如果是,如何处理?如果使用UIWebView托管html+javascript,则可以使用stringByEvaluatingJavaScriptFromString:方法计算javascript片段(并从中调用JS函数)。 stringByEvaluatingJavaScriptFromString: 从javascript调用

Objective-C和JavaScript之间可以通信吗?从Objective-C调用JavaScript函数。从JavaScript调用Objective-C函数?如果是,如何处理?

如果使用UIWebView托管html+javascript,则可以使用stringByEvaluatingJavaScriptFromString:方法计算javascript片段(并从中调用JS函数)。
stringByEvaluatingJavaScriptFromString: 从javascript调用ObjC代码会很复杂:据我所知,只能从ObjC调用JS代码,而不能从viceversa调用。
您可以定期从ObjC调用某个JS函数,并使用返回的字符串选择要在ObjC中执行的某些操作。
我觉得有点像黑客,但我没有其他想法。

使用phonegap

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

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

不过,它有一些很好的功能,可以多跑一英里。您可以使用插件创建自己的自定义obj-c函数,并从js调用这些函数

您还可以使用以下命令从obj-c调用js: [webView stringByEvaluatingJavaScriptFromString:'alert('Hello;')

注意webView是phonegap UIwebview的句柄

在phonegap插件和phonegap应用程序委托中,您会自动获得此操作的句柄

但是,不知道如何从非phonegap类(如openfeint)调用它


这就是我现在要问的。

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

在需要调用本机方法的地方,准备一个伪URL,如
fake://abc?par1=val1&par2=val2
并用假请求加载web视图。
上述委托方法将捕获请求,然后您可以在那里根据协议处理请求。如果请求是假的,则执行您想要的任何操作并返回委托方法返回否,否则返回YES以正常加载请求