iOS与HTML的交互

2018-02-27 11:28:58来源:oschina作者:xiaobai1315人点击

分享
iOS项目导入HTML文件

HTML文件导入到项目时不要通过“右键-Add Files to ...”的方式,这样导入的HTML文件会直接放到项目的bundle下,HTML文件原先的目录结构会被删除,导致链接到HTML文件里面的css和js文件路径错误。正确的方式时直接将文件拖到Xcode工程中,选择"Create folder refrences"选项,这样文件的目录结构才能完整的导入。导入的HTML文件是以蓝色文件夹的状态存在的。


iOS加载HTML文件
//设置webView
_webView.scalesPageToFit = YES;
_webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
_webView.scrollView.bounces = NO;//查找HTML路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"SelectReader" ofType:@".html" inDirectory:@"html/html"];
NSURL *url = [NSURL fileURLWithPath:path];
//加载HTML
[_webView loadRequest:[NSURLRequest requestWithURL:url]];
iOS监听JS事件
//html代码,给a标签添加点击事件,传递参数‘0’

//iOS代码
//导入系统框架
#import
//在webView加载完成后设置js事件的回调函数
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
//创建js句柄
_context = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];//为 js的selReader事件添加回调
_context[@"selReader"] = ^(NSString *row){
NSLog(@"%@", row);
};
}
iOS调用JS函数
//JS文件中定义函数,根据传递进来的数组,动态添加标签
function updateTable(datasource) {
for(i in datasource) {
//生成标签的文本
var func = "/'" + i + "/'"; //拼接标签点击事件的参数

//创建div标签,给div标签指定类,添加点击事件
var text = '
' + '

' + datasource[i] + '

' +'
' +'
';
//追加标签
$("#deviceList").append(text);
}
}
//iOS文件
-(void)webViewDidFinishLoad:(UIWebView *)webView
{
_context = [_webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];//html的数据源
NSArray *dataSource = @[@"FT_000000001", @"FT_000000002", @"FT_000000003"];//获取JS定义的updateTable函数
JSValue *function = _context[@"updateTable"];//调用JS函数
[function callWithArguments:@[dataSource]];//监听div标签的点击事件
_context[@"selectReader"] = ^(NSString *reader){
NSLog(@"%@", reader);
};
}

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台