iOS與HTML交互

Simulator Screen Shot 2017年2月10日 下午2.16.07.png

這是一個HTML頁面,需要我們做數(shù)據(jù)交互。
具體實現(xiàn)思路就是使用iOS的一個庫<JavaScriptCore/JavaScriptCore.h>做交互
創(chuàng)建一個ViewController,在.h文件中創(chuàng)建JSContext對象,

@property (nonatomic, strong) JSContext *jsContext;

寫一個自定義協(xié)議,協(xié)議中要實現(xiàn)的方法是HTML頁面中點擊觸發(fā)方法

@protocol JSObjectiveCDelegate <JSExport>
- (void)getMessage:(NSString *)user :(NSString *)psw;
//此方法就是HTML代碼中的約定方法;

創(chuàng)建一個js模型,通過模型調(diào)用方法更簡便

@interface JsObjCModel : NSObject <JSObjectiveCDelegate>

@property (nonatomic, weak) JSContext *jsContext;

在.m中調(diào)用webView的一個協(xié)議方法

- (void)webViewDidFinishLoad:(UIWebView *)webView{
  //    [webView stringByEvaluatingJavaScriptFromString:@"OCModel.callSystemCamera()"];
  self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
  // 通過模型調(diào)用方法,這種方式更好些。
  JsObjCModel *model  = [[JsObjCModel alloc] init];
  self.jsContext[@"jsObject"] = model;//這里的@"jsObject"是HTML代碼中的js對象,注意保持一致
  model.jsContext = self.jsContext;
  model.webView = _web;
  self.jsContext.exceptionHandler = ^(JSContext *context, JSValue *exceptionValue) {
      context.exception = exceptionValue;
      NSLog(@"異常信息:%@", exceptionValue);
  };
}

這是HTML代碼中的約定方法

 <script>
            function logIn(){
                var logName = $("#u").val();
                var logPass = $("#p").val();
                var logObj = jsObject.getMessage(logName,logPass);
            }

</script>

在.m中加入js模型,調(diào)用方法

@implementation JsObjCModel
- (void)getMessage:(NSString *)signName :(NSString *)signPass
{
//在這里寫代碼,實現(xiàn)你的數(shù)據(jù)交互就可以了;
}

注意:這個方法雖然是在ViewController.m中寫的,但是這是一個單獨的類,它不具有ViewController的屬性,所以有關(guān)于view的方法及屬性都是用不了的,這時可以添加通知解決。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 基于UIWebView ios與js交互 githubdemo:https://github.com/wangji...
    874b526fa570閱讀 2,381評論 0 1
  • 一.加載后臺傳過來的HTML標(biāo)簽,文字都能正常顯示但是圖片顯示不了。找問題找了很久沒有發(fā)現(xiàn)那個地方寫錯,也問了別人...
    騎馬縱天下閱讀 276評論 0 1
  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,585評論 30 472
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,085評論 4 61
  • 紫色的夢飛入 像紫荊花一樣的 芳香四散 在每一座停留的城市走街串巷 與每一個陌生的人走親訪友 唯獨太久沒有和你 作...
    蘇shi閱讀 244評論 2 2

友情鏈接更多精彩內(nèi)容