我正在开发一个将同时使用UIWebView中的HTML5和本机iOS框架的应用程序。我知道我可以实现JavaScript和Objective- C之间的通信。是否有任何库可以简化此通信的实现?我知道有几个库可以用HTML5和javascript创建本机iOS应用程序(例如AppMobi,PhoneGap),但是我不确定是否有一个库可以帮助创建使用JavaScript繁重的本机iOS应用程序。我需要:
有一些库,但是我没有在大型项目中使用任何库,因此您可能想尝试一下:
—
但是,我认为这很简单,您可以自己尝试一下。当我需要这样做时,我个人就是这样做的。您可能还会创建一个适合您需求的简单库。
这实际上只是一行代码。
NSString *returnvalue = [webView stringByEvaluatingJavaScriptFromString:@"your javascript code string here"];
有关官方UIWebView文档的更多详细信息。
不幸的是,这稍微复杂一点,因为Mac OSX上不存在相同的windowScriptObject属性(和类),因此两者之间无法完全通信。
但是,您可以轻松地从javascript自定义网址进行调用,例如:
window.location = yourscheme://callfunction/parameter1/parameter2?parameter3=value
并从Objective-C拦截它:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { NSURL *URL = [request URL]; if ([[URL scheme] isEqualToString:@"yourscheme"]) { // parse the rest of the URL object and execute functions } }
这虽然没有达到应有的效果(或使用windowScriptObject),但它可以工作。
从上面的解释中,您可以看到,如果要执行此操作,则必须创建一些JavaScript代码,将其附加到要监视的事件上,然后调用正确的window.location调用然后将其拦截。
window.location
同样,它不是很干净,但是可以工作。