UIWebView是UIKit庫下內置的瀏覽器控件,它繼承自UIView。可以通過UIWebView瀏覽網頁,打開文檔等多種功能。系統自帶的Safari就是UIWebView實現的。
網頁不僅是展示頁面,也是一個交互頁面,當用戶想從網頁調用系統方法,或者系統想更改網頁的內容時,就涉及到了OC與JS之間的交互。OC與JS交互有多種方法。 OC 與 JS 交互方法一:
OC調用JS指的是用戶可以在手機上通過app對app里的網頁進行增刪改查,但是我們是不能直接修改網頁的內容的,只能通過JS動態來修改。 總體來說如下是使用方法:
// OC -> JS-(void)webViewDidFinishLoad:(UIWebView *)webView { [webView stringByEvaluatingJavascriptFromString :@“這里是JS語法”]; }JS調用OC一般是指,頁面中某些功能需要調用系統的方法,html和JS無法直接和系統交互,只能通知web View,然后webView獲取到消息, 傳遞OC實現JS調用OC,比如點擊網頁上的電話號碼實現打電話的需求。
//JS -> OC/*先在網頁中設定好響應方法和協議,然后讓網頁響應這個協議并賦值給 window.location.href ,這樣攔截所有請求的shouldStartLoadWithRequest代理方法就會接收到這個規定好的協議,按照這個協議轉化成SEL方法,然后去執行就好了,就實現了JS 調用OC*/OC 與 JS 交互方法二: iOS 7之后,蘋果發布了JavaScriptCore.framework,它使得JS與OC的交互更加方便了。使用時首先導入JavaScriptCore庫。
舉例如下:
-(void)webViewDidFinishLoad:(UIWebView *)webView { //網頁加載完成調用此方法 //首先創建JSContext 對象(此處通過當前webView的鍵獲取到jscontext) JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; NSString *alertJS=@"alert('test js OC')"; //準備執行的js代碼,此處為彈出alert “test js OC” [context evaluateScript:alertJS];//通過oc方法調用js的alert }OC 與 JS 交互方法三: 當然也有一些第三方實現交互的方式,這里就不再多說了。
新聞熱點
疑難解答