1. 程式人生 > >[IOS經驗總結]UIWebView與JS之間的資料互動

[IOS經驗總結]UIWebView與JS之間的資料互動

在IOS中原生控制元件很多.能自定義的控制元件也很多.但在檢視介面的開發上如果用原生的控制元件去做就顯得非常麻煩了.在我已知的技術中擁有最便捷和效果最好的檢視技術展示技術中.最優秀的就要屬網頁.假如用到HTML來展示檢視介面的話.我們就需要一個承載的容器.這個容器IOS已經幫我們提供好了,那就是我們今天的主角UIWebView控制元件.

準備工作:

一個完整的html頁面.

一.將html網頁載入進入UIWebView容器中

在"-(void)viewDidLoad”方法中加入如下程式碼

NSString *webPath = [[NSBundlemainBundle]pathForResource:@“HelloWord"ofType:@"html”];//獲取檔案路徑

NSURL *webURL = [NSURLfileURLWithPath:webPath];//通過檔案路徑字串設定URL

NSURLRequest *URLRequest = [NSURLRequestrequestWithURL:webURL];//設定請求提交的相關URL

[self.webViewloadRequest:URLRequest];//提交請求

二.加入UIWebViewDelegate委託(如果想要進行相應的資料互動必須新增相應的我委託)

1.-(BOOL)webView:(UIWebView 

*)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType//html頁面的js動作觸發時執行

2.-(void)webViewDidFinishLoad:(UIWebView 

*)webView //html載入完後觸發

三.OC提交JS請求.執行JS方法

[self.webViewstringByEvaluatingJavaScriptFromString:@”方法名(%@)",引數]];

四.JS提交請求到OC

在-(BOOL)webView:(UIWebView*)webView 

shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType中新增如下程式碼:

NSString *requestString = [[requestURL]absoluteString];//獲取請求的絕對路徑. 

NSArray *components = [requestStringcomponentsSeparatedByString:@":”];//提交請求時候分割引數的分隔符 

if ([componentscount]
>1 && [(NSString
*)[components objectAtIndex:0]isEqualToString:@"testapp"])
{

//過濾請求是否是我們需要的.不需要的請求不進入條件

if([(NSString
*)[components objectAtIndex:1]isEqualToString:@"change"]) 

{

//所要執行的操作

}

returnNO;

}

returnYES;

五.HTML中JS的寫法.

1.接收請求的方法寫法

functionfund(){

//操作

}

2.提交請求的方法寫法

function sendCommand(cmd,param){

var url="testapp:"+cmd+":"+param;//組合請求字串 

document.location = url;//提交的請求

}