【iOS系列】-UIWebView加载网页禁止左右滑动
2015-05-09 00:47
976 查看
【iOS系列】-UIWebView加载网页禁止左右滑动
问题:
做项目时候,用UIWebView加载网页的时候,要求是和微信网页中打开的网页的效果一样,也即是只能上下滑动,不能左右滑动,也不能缩放.根据要求把webview.scalesPageToFit = NO;这样就不能对网页进行缩放了,
但是仔细的看加载的网页,还是能看清,左右有能够轻微的滑动,效果如下:
分析:
网上搜索发现好多人也是有同样的疑惑,看了一会也没有解决方案。索性就自己解决了,解决方案如下:首先,UIWebView里面是有ScrollView的,而其可以缩放,滑动等效果也是由ScrollView的特性。所以设置ScrollView的属性应该能把问题解决,
所以首先设置了contentInset,contentSize
webview.scrollView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0); webview.scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);//这里webView的frame时充满屏幕的
发现没有效果,依然是能够左右移动(非常细微,同上图)。
找到网页开发人员,他们说已经适配各个屏幕,然后问Android开发人员,发现他们禁止缩放后,左右不能滑动,所以问题应该出在我这里了。
解决方案:
我们去分析,其能左右滑动ScrollView有个代理方法scrollViewDidScroll,在滑动的时候,就会调用,这里能不能找到解决方案呢。所以我就自定义了一个MyWebView继承于UIWebView,为了能拿到scrollView中得scrollViewDidScroll方法,做一些事情。
首先在这个方法中得到CGPoint point = scrollView.contentOffset;然后打印X方向偏移位置发现是2,既然一滑动就会调用,索性我就在其X值大于0,也即X方向上有偏移的时候就立即给纠正。
-(void)scrollViewDidScroll:(UIScrollView *)scrollView { CGPoint point = scrollView.contentOffset; if (point.x > 0) { scrollView.contentOffset = CGPointMake(0, point.y);//这里不要设置为CGPointMake(0, 0),这样我们在文章下面左右滑动的时候,就跳到文章的起始位置,不科学 } }
注:要是不让网页缩放,webview.scalesPageToFit = NO;这个也是要加上的。
就此,运行发现问题解决。同理禁止上下滑动也可用同样的思路解决。
作者:Darren
微博:@IT_攻城师
github:@Darren90
博客:http://www.cnblogs.com/fengtengfei/
欢迎您的访问...
相关文章推荐
- ios开发 uiwebview加载网页时阻止禁止取消图片下载
- IOS中使用UIWebView 加载网页、文件、 html的方法
- iOS 禁用UIWebView 加载 网页的长按事件
- cocos2dx IOS 使用UIWebView来加载网页
- iOS 禁用UIWebView 加载 网页的长按事件
- UIWebView隐藏右侧和底部滚动条,去掉滚动边界的黑色背景,禁止左右滑动
- IOS UIWebView不能加载网页的解决方法
- iOS 禁用UIWebView 加载 网页的长按事件
- iOS开发:禁止键盘弹出时UIWebView自动滑动
- iOS 禁用UIWebView 加载 网页的长按事件
- ios UIWebView 加载网页、文件、 html
- iOS开发UIWebView如何加载本地带有JS和本地图片的网页
- iOS 禁用UIWebView 加载 网页的长按事件
- iOS 禁用UIWebView 加载 网页的长按事件
- IOS 获取UIWebView加载网页的上的数据实例
- iOS UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- iOS之支持https与ssl双向验证(包含:解决UIWebView加载不了https网页的图片,css,js等外部资源)
- iOS:用UIWebView加载网页,退出控制器内存不减,每次加载持续增涨(内存警告)
- IOS UIWebView加载网页实例