引言
UIWebView很强大,可加载 pdf doc mp4 等相关文件。
初始化
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| //UIWebView 初始化 UIWebView * webView = [[UIWebView alloc] initWithFrame:self.view.bounds]; // 网页自适应webView的大小 webView.scalesPageToFit = YES; /* 检查敏感词汇 UIDataDetectorTypePhoneNumber 检查是否有手机号 UIDataDetectorTypeLink 超链接 UIDataDetectorTypeAddress 地址 UIDataDetectorTypeCalendarEvent 日期 UIDataDetectorTypeNone 什么也不检查 UIDataDetectorTypeAll 检查所有 */ webView.dataDetectorTypes = UIDataDetectorTypeAll; // 加载一个链接 NSString * path = @"http://divtao.com"; // 将字符串进行编码 NSString * urlStr = [self.fileAttribute stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]; // 定义一个统一资源管理器 也就是将字符串转化成网址 NSURL * url = [NSURL URLWithString:path]; // 将网址转化成请求 NSURLRequest * request = [NSURLRequest requestWithURL:url]; // webView加载请求 [webView loadRequest:request]; //加载 网页htmlstr数据 [_webView loadHTMLString:htmlStr baseURL:nil]; // 设置代理 webView.delegate = self;
|
协议方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSLog(@"请求的地址%@", request.URL.absoluteString); if([request.URL.absoluteString hasPrefix:@"ios://"]){ //如果为真,跳转到其他页 return NO; } // 即将开始加载 return YES; } - (void)webViewDidStartLoad:(UIWebView *)webView { NSLog(@"已经开始加载"); } - (void)webViewDidFinishLoad:(UIWebView *)webView { NSLog(@"加载完成"); } - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error { NSLog(@"加载失败error=%@",error); }
|
加载 txt 文件
1 2 3 4 5 6
| //利用webVw加载txt文本 UIWebView * webVw = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, kScreenHeight - 64)]; NSString * path = [[NSBundle mainBundle] pathForResource:@"fileName" ofType:@"txt"]; NSData * dataTxt = [NSData dataWithContentsOfFile:path]; [webVw loadData:dataTxt MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:[NSURL fileURLWithPath:NSTemporaryDirectory()]]; [self.view addSubview:webVw];
|
调转方法
1 2 3 4
| - (void)reload; //刷新 - (void)stopLoading; //停止加载 - (void)goBack; // 返回 - (void)goForward; //往前
|
Document 对象方法
getElementById() 返回对拥有指定 id 的第一个对象的引用。
getElementsByName() 返回带有指定名称的对象集合。
getElementsByTagName() 返回带有指定签名的对象集合。
1 2 3 4
| // document.body.outerHTML // document.getElementsByClassName('timeline clear blank')[0].innerText [webView evaluateJavaScript:@"document.body.outerHTML" completionHandler:^(id _Nullable obj, NSError * _Nullable error) { }];
|
参考资料
0、关于UIWebView的总结
1、iOS中JavaScript和OC交互
2、iOS开发之Objective-C与JavaScript的交互
3、Using UIWebView to display select document types
4、WKWebView中的js与原生App的交互