iOS与HTML交互

iOS与HTML交互_第1张图片
Simulator Screen Shot 2017年2月10日 下午2.16.07.png

这是一个HTML页面,需要我们做数据交互。
具体实现思路就是使用iOS的一个库做交互
创建一个ViewController,在.h文件中创建JSContext对象,

@property (nonatomic, strong) JSContext *jsContext;

写一个自定义协议,协议中要实现的方法是HTML页面中点击触发方法

@protocol JSObjectiveCDelegate 
- (void)getMessage:(NSString *)user :(NSString *)psw;
//此方法就是HTML代码中的约定方法;

创建一个js模型,通过模型调用方法更简便

@interface JsObjCModel : NSObject 

@property (nonatomic, weak) JSContext *jsContext;

在.m中调用webView的一个协议方法

- (void)webViewDidFinishLoad:(UIWebView *)webView{
  //    [webView stringByEvaluatingJavaScriptFromString:@"OCModel.callSystemCamera()"];
  self.jsContext = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
  // 通过模型调用方法,这种方式更好些。
  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代码中的约定方法

 

在.m中加入js模型,调用方法

@implementation JsObjCModel
- (void)getMessage:(NSString *)signName :(NSString *)signPass
{
//在这里写代码,实现你的数据交互就可以了;
}

注意:这个方法虽然是在ViewController.m中写的,但是这是一个单独的类,它不具有ViewController的属性,所以有关于view的方法及属性都是用不了的,这时可以添加通知解决。

你可能感兴趣的:(iOS与HTML交互)