1、Objective-c調用js方法,只是需要調用uiwebview內建的方法就可以了。
[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(‘%@’)",htmlStr]];
2、js調用Objective-c方法,這時就需要和js約定一個參數或者方法了。
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
在這個回調方法中,我們會得到伺服器傳過來的資料request,我們可以判斷穿過來的參數,然後進行判斷調用oc的方法。
if ([request.URL.scheme isEqualToString:@"gethtmlstring"]) { NSString *htmlStr = [self getHtmlString:description]; htmlStr = [htmlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"getHtmlString(\"%@\")",htmlStr]]; }
這樣就實現了對oc的調用了。
在這裡特別值得注意的問題:我這裡傳了html格式的參數。我在這裡就遇到了,傳過去的參數始終不對,無法調用js的方法。
stringWithContentsOfFile,這個方法用來讀取檔案,如果不指定編碼方式的話,有可能造成資料的丟失,所以我這裡指定了utf-8的編碼方式。 在傳參數的時,還有可能的一種問題。這個參數裡面如果帶有(\r \n ')等等, js那邊收不到這個值, 這些帶\的需要轉義, 如下這麼寫js才能收到完整的訊息:
message = [message stringByReplacingOccurrencesOfString:@"\n" withString:@"\\\\n"];NSString *jsMethod = [NSString stringWithFormat:@"JsMethod(\"%@\")", message]
例子代碼:http://download.csdn.net/detail/pearlhuzhu/5550141