UIWebView在iOS开发中用于加载网页视图。我们可以在此基础上进行多种操作。闲来无事突然对这个控件感兴趣了,顺便记录一下自己的研究成果吧
一、UIWebView最基本的操作
self.webView = [[UIWebView alloc] initWithFrame:self.view.bounds];
_webView.delegate = self;
[self.view addSubview:_webView];
[_webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"https://www.baidu.com/"]]];
二、UIWebView属性操作
// 自动对页面进行缩放以适应屏幕
_ webView.scalesPageToFit = YES;
// 自动检测电话
_ webView.dataDetectorTypes = UIDataDetectorTypePhoneNumber;
// 设置背景透明
_webView.backgroundColor = [UIColor clearColor];
三、UIWebView实现类似浏览器的导航动作
[_webView reload];// 加载
[_webView stopLoading];// 停止加载
[_webView goBack]; // 返回
[_webView goForward];// 前进
四、加载本地HTML页面
NSString *localPageName = @"myPage";
NSString *localPageFilePath = [[NSBundle mainBundle] pathForResource:localPageName ofType:@"html"];
NSURL *localPageFileURL = [NSURL fileURLWithPath:localPageFilePath];
[_webView loadRequest:[NSURLRequest requestWithURL:localPageFileURL]];
五、UIWebView调用javascript代码
// 1.获取当前页面的URL
NSString *currentURL = [webView stringByEvaluatingJavaScriptFromString:@"document.location.href"];
NSLog(@"%@",currentURL);
// 2.获取页面title
NSString *title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];
NSLog(@"%@",title);
六、UIWebView添加手势
最近一个项目其中一个页面是用webView加载h5,最近h5比较火。谁知今天产品突然告知我还要在加手势以及把原来的项目结构修改。what?我都做完好几天了突然来了很多奇葩需求。这只是心里想想,有需求还是要改。
于是我先加了一个单点手势UITapGestureRecognizer,然而测试时才发现没反应。
原因:webView上有scrollView,scrollView本身也有点击事件造成了冲突。
解决方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{
if (gestureRecognizer == self.tap)
{
return YES;
}
return NO;
}
总结,看似简单的控件,其实远远不止表面那么简单。作为一个优秀的程序员应该做到不仅会用也要多思考为什么这么用。探究原理理解逻辑。我也做了一份UIWebView的下拉刷新Demo,由于代码比较复杂就不放这里了。有需要的同学可以问我。