国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS開發之用javascript調用oc方法而非url

2020-07-26 03:17:45
字體:
來源:轉載
供稿:網友

先來看看如何在項目中的webview上面點擊一個按鈕,就能達到調用oc代碼

上面的這個頁面是webview里面嵌套的一個項目的網頁,打印訂單點擊之后(點擊事件是一個js方法),需要調用oc里面集成好的藍牙打印機功能,來完成打印。

所以這里只能用js代碼來直接調用oc代碼

1.首先創建一個iOS類,因為這里一般都需要安卓端做一套,iOS端做一套,所以一般這樣命名以示區別

.h#import <Foundation/Foundation.h>#import <JavaScriptCore/JavaScriptCore.h>/** * js調用oc里 main的代碼,需要借助這個協議才行 */@protocol JSObjectProtocol <JSExport>@required#pragma mark -js調用該oc方法,并且將jsonstring打印出來- (void)print:(NSString *)jsonString;@end@interface iOS : NSObject<JSObjectProtocol>@end
.m@implementation iOS#pragma mark -打印jsonString- (void)print:(NSString *)jsonString{  //打印的具體事件}

2. 在網頁加載結束之后調用注冊iOS注冊

#pragma mark -網頁加載完畢,注冊ios對象,并且自動檢查打印機是否自動連接-(void)webViewDidFinishLoad:(UIWebView *)webView{  //首先創建JSContext 對象(此處通過當前webView的鍵獲取到jscontext)  //這個對象必須創建出來,否則會無法調用到協議里的方法  iOS *ios = [[iOS alloc] init];  JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];  context[@"iOS"] = ios;}

3. 在js的點擊事件里面類似下面這樣調用即可(下面這段代碼寫在對應的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); }

以上就是關于iOS如何使用javascript代碼調用oc方法的全部內容,希望對大家學習IOS開發有所幫助。希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 锡林郭勒盟| 阜阳市| 长葛市| 隆昌县| 崇信县| 青海省| 东光县| 岳池县| 北辰区| 德惠市| 韩城市| 渭源县| 新竹县| 黄大仙区| 扎兰屯市| 衢州市| 抚州市| 泉州市| 垣曲县| 格尔木市| 伊通| 海丰县| 盐边县| 邢台市| 绿春县| 靖宇县| 新和县| 孝昌县| 三河市| 陈巴尔虎旗| 土默特左旗| 衡阳市| 久治县| 凉山| 佛坪县| 曲麻莱县| 应城市| 锦州市| 新闻| 汶川县| 富锦市|