iOS開(kāi)發(fā)之用javascript調(diào)用oc方法而非url
先來(lái)看看如何在項(xiàng)目中的webview上面點(diǎn)擊一個(gè)按鈕,就能達(dá)到調(diào)用oc代碼


上面的這個(gè)頁(yè)面是webview里面嵌套的一個(gè)項(xiàng)目的網(wǎng)頁(yè),打印訂單點(diǎn)擊之后(點(diǎn)擊事件是一個(gè)js方法),需要調(diào)用oc里面集成好的藍(lán)牙打印機(jī)功能,來(lái)完成打印。
所以這里只能用js代碼來(lái)直接調(diào)用oc代碼。
1.首先創(chuàng)建一個(gè)iOS類(lèi),因?yàn)檫@里一般都需要安卓端做一套,iOS端做一套,所以一般這樣命名以示區(qū)別
.h #import <Foundation/Foundation.h> #import <JavaScriptCore/JavaScriptCore.h> /** * js調(diào)用oc里 main的代碼,需要借助這個(gè)協(xié)議才行 */ @protocol JSObjectProtocol <JSExport> @required #pragma mark -js調(diào)用該oc方法,并且將jsonstring打印出來(lái) - (void)print:(NSString *)jsonString; @end @interface iOS : NSObject<JSObjectProtocol> @end
.m
@implementation iOS
#pragma mark -打印jsonString
- (void)print:(NSString *)jsonString{
//打印的具體事件
}
2. 在網(wǎng)頁(yè)加載結(jié)束之后調(diào)用注冊(cè)iOS注冊(cè)
#pragma mark -網(wǎng)頁(yè)加載完畢,注冊(cè)ios對(duì)象,并且自動(dòng)檢查打印機(jī)是否自動(dòng)連接
-(void)webViewDidFinishLoad:(UIWebView *)webView{
//首先創(chuàng)建JSContext 對(duì)象(此處通過(guò)當(dāng)前webView的鍵獲取到j(luò)scontext)
//這個(gè)對(duì)象必須創(chuàng)建出來(lái),否則會(huì)無(wú)法調(diào)用到協(xié)議里的方法
iOS *ios = [[iOS alloc] init];
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
context[@"iOS"] = ios;
}
3. 在js的點(diǎn)擊事件里面類(lèi)似下面這樣調(diào)用即可(下面這段代碼寫(xiě)在對(duì)應(yīng)的js代碼里面,而非你的oc代碼里面)
if (window["Android"] && window["Android"]["jsPrint"]) {
var andPrint = window.Android.jsPrint(JSON.stringify(d));
} else if (window["iOS"] && window["iOS"]["print"]) {
window["iOS"]["print"](JSON.stringify(d));
} else {
this.alert.autoCloseTip("找不到打印方法!", 1000);
}
以上就是關(guān)于iOS如何使用javascript代碼調(diào)用oc方法的全部?jī)?nèi)容,希望對(duì)大家學(xué)習(xí)IOS開(kāi)發(fā)有所幫助。希望大家多多支持腳本之家。
相關(guān)文章
iOS開(kāi)發(fā)之如何獲取視圖在屏幕中顯示的位置
這篇文章主要給大家介紹了關(guān)于iOS開(kāi)發(fā)之如何獲取視圖在屏幕上顯示的位置,以及ios 獲取控件相對(duì)屏幕的位置的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11
iOS開(kāi)發(fā)微信收款到賬語(yǔ)音提醒功能思路詳解
這篇文章主要介紹了iOS開(kāi)發(fā)微信收款到賬語(yǔ)音提醒功能思路詳解,需要的朋友可以參考下2017-09-09
iOS中的UIKeyboard鍵盤(pán)視圖使用方法小結(jié)
鍵盤(pán)視圖我們平時(shí)在做App的時(shí)候都要調(diào)用得到,這里我們就來(lái)整理一下iOS中的UIKeyboard鍵盤(pán)視圖使用方法小結(jié),需要的朋友可以參考下2016-06-06
iOS實(shí)現(xiàn)微信/QQ顯示最近拍攝圖片的功能實(shí)例代碼
如果你剛剛拍攝了圖片,在使用微信/QQ發(fā)生消息時(shí)會(huì)顯示“你可能要發(fā)送的圖片”,這個(gè)功能非常人性化,怎么實(shí)現(xiàn)的呢?下面小編給大家分享iOS實(shí)現(xiàn)微信/QQ顯示最近拍攝圖片的功能實(shí)例代碼,一起看看吧2017-03-03
iOS11帶來(lái)的技術(shù)變化及注意事項(xiàng)
這篇文章給大家介紹了ios11帶來(lái)了技術(shù)變化及注意事項(xiàng),在相冊(cè)權(quán)限上有很大變化,具體內(nèi)容詳情大家參考下本文2017-09-09
僅需幾行代碼實(shí)現(xiàn)方便易用的狀態(tài)欄指示器
本文通過(guò)僅僅數(shù)行代碼實(shí)現(xiàn)了非常方便易用的狀態(tài)欄指示器,比如微博項(xiàng)目的微博數(shù)提醒框,需要的朋友可以參考下2015-08-08
iOS中獲取系統(tǒng)相冊(cè)中的圖片實(shí)例
這篇文章主要介紹了iOS中獲取系統(tǒng)相冊(cè)中的圖片實(shí)例,具有一定的參考價(jià)值沒(méi)有需要的朋友可以了解一下。2016-11-11

