@property (nonatomic, copy) NSString * url;

@interface WebViewController ()<UIWebViewDelegate,UIGestureRecognizerDelegate>

@property (nonatomic, weak) UIWebView * webView;

@property (nonatomic, weak) UIButton * backItem;

@property (nonatomic, weak) UIButton * closeItem;

@property (nonatomic, weak) UIActivityIndicatorView * activityView;

@end

@implementation WebViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

[self initNaviBar];

[self initWebView];

}

- (void)initWebView{

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

webView.delegate = self;

[self.view addSubview:webView];

self.webView = webView;

//activityView

UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

activityView.center = self.view.center;

[activityView startAnimating];

self.activityView = activityView;

[self.view addSubview:activityView];

//清除UIWebView的缓存

[[NSURLCache sharedURLCache] removeAllCachedResponses];

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0]];

}

- (void)initNaviBar{

UIView * backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];

backView.backgroundColor = [UIColor purpleColor];

UIButton * backItem = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 56, 44)];

[backItem setImage:[UIImage imageNamed:@"back_arrow"] forState:UIControlStateNormal];

[backItem setImageEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];

[backItem setTitle:@"返回" forState:UIControlStateNormal];

[backItem setTitleEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];

[backItem setTitleColor:[UIColor colorWithRed:0.000 green:0.502 blue:1.000 alpha:1.000] forState:UIControlStateNormal];

[backItem addTarget:self action:@selector(clickedBackItem:) forControlEvents:UIControlEventTouchUpInside];

self.backItem = backItem;

[backView addSubview:backItem];

UIButton * closeItem = [[UIButton alloc]initWithFrame:CGRectMake(44+12, 0, 44, 44)];

[closeItem setTitle:@"关闭" forState:UIControlStateNormal];

[closeItem setTitleColor:[UIColor colorWithRed:0.000 green:0.502 blue:1.000 alpha:1.000] forState:UIControlStateNormal];

[closeItem addTarget:self action:@selector(clickedCloseItem:) forControlEvents:UIControlEventTouchUpInside];

closeItem.hidden = YES;

self.closeItem = closeItem;

[backView addSubview:closeItem];

UIBarButtonItem * leftItemBar = [[UIBarButtonItem alloc]initWithCustomView:backView];

self.navigationItem.leftBarButtonItem = leftItemBar;

self.navigationController.interactivePopGestureRecognizer.enabled = YES;

self.navigationController.interactivePopGestureRecognizer.delegate = self;

}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

if (self.webView.canGoBack) {

[self.webView goBack];

self.closeItem.hidden = NO;

return NO;

}

return YES;

}

#pragma mark - clickedBackItem

- (void)clickedBackItem:(UIBarButtonItem *)btn{

if (self.webView.canGoBack) {

[self.webView goBack];

self.closeItem.hidden = NO;

}else{

[self clickedCloseItem:nil];

}

}

#pragma mark - clickedCloseItem

- (void)clickedCloseItem:(UIButton *)btn{

[self.navigationController popViewControllerAnimated:YES];

}

#pragma mark - UIWebViewDelegate

- (void)webViewDidStartLoad:(UIWebView *)webView{

self.activityView.hidden = NO;

}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

NSLog(@"url: %@", request.URL.absoluteURL.description);

if (self.webView.canGoBack) {

self.closeItem.hidden = NO;

}

return YES;

}

- (void)webViewDidFinishLoad:(UIWebView *)webView{

self.activityView.hidden = YES;

self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];

}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

self.activityView.hidden = YES;

}

ios -仿微信有多级网页时,显示返回跟关闭按钮的更多相关文章

  1. 微信QQ打开网页时提示用浏览器打开

    微信QQ打开网页时提示用浏览器打开 一,需求分析 1.1,使用微信或QQ打开网址时,无法在微信或QQ内打开常用下载软件,手机APP等.故此需要在微信qq里提示 二,功能实现 2.1 html实现 &l ...

  2. android高仿微信UI点击头像显示大图片效果

    用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另 ...

  3. iOS - 仿微信朋友圈视频剪切功能

    分析需求 我们先看一看微信的界面 微信效果图 1.页面下部拖动左边和右边的白色竖条控制剪切视频的开始和结束时间,预览界面跟随拖动位置跳到视频相应帧画面,控制视频长度最长15秒,最短5秒 2.拖动下部图 ...

  4. IOS仿微信朋友圈好友展示

    前几天小伙伴要帮他做一个群聊功能,里面有好友列表,要求和微信的差不多(见下图),让小伙伴自己实现了下,他将CollectionView放在tableView的tableHead中,可是当添加好友或删除 ...

  5. android高仿微信UI点击头像显示大图片效果, Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html http://blog.csdn.net/xiaanming/arti ...

  6. iOS实现微信外部H5支付完成后返回原APP

    看到微信最近放开了微信H5支付,公司决定把H5集成到多款APP上.下面记录下了开发过程. 由于是微信新推出的支付方式,在网上搜索到的相关资料并不多,其中有一篇文件(点此跳转)对我的整个开发过程起到了很 ...

  7. h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗

    这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...

  8. Android -- 真正的 高仿微信 打开网页的进度条效果

    (本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...

  9. 仿微信中加载网页时带线行进度条的WebView的实现

    finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来 ...

随机推荐

  1. 使用PM2守护Nodejs命令行程序

    介绍 pm2是nodejs的一个带有负载均衡功能的应用进程管理器的模块,类似有Supervisor,forever,用来进行进程管理. 一.安装: <pre>npm install pm2 ...

  2. appium Parameters were incorrect

    raise exception_class(value) selenium.common.exceptions.WebDriverException: Message: Parameters were ...

  3. ol 接入百度地图

    ol5 如何接入百度地图,网上的资料很多,但是大多都有问题,在级别放大时,地图发生扭曲.为此注重研究了下ol5 接入百度地图的方法. 首先明确以下问题: 百度地图的投影是3857. 百度地图的分辨率和 ...

  4. ECSHOP站内页面跳转,避免死链

    2.x版本域名重定向: # For ISAPI_Rewrite 2.x RewriteCond Host: ^steveluo\.name$ RewriteRule (.*) http\://www\ ...

  5. Microsoft .Net Remoting

    什么是Remoting,简而言之,我们可以将其看作是一种分布式处理方式.从微软的产品角度来看,可以说Remoting就是DCOM的一种升级,它改善了很多功能,并极好的融合到.Net平台下.Micros ...

  6. C++11之右值引用(一):从左值右值到右值引用

    C++98中规定了左值和右值的概念,但是一般程序员不需要理解的过于深入,因为对于C++98,左值和右值的划分一般用处不大,但是到了C++11,它的重要性开始显现出来. C++98标准明确规定: 左值是 ...

  7. 通过Navicat for MySQL远程连接的时候报错mysql 1130 的解决方法

    用Navicat连接远程MYSQL,提示如下错误,我以为是自己的防火墙问题,但是关了,依然不行. ERROR 1130: Host '192.168.1.3' is not allowed to co ...

  8. php 处理 form 表单提交多个 name 属性值相同的 input 标签

    一 问题 在公司的开发过程中,遇到了一个问题:如何处理 form 表单提交了多个 name 属性值相同的 input 标签?源码如下(源码是在 form 表单之中的): <!--{loop $a ...

  9. CentOS6.8 SVN服务器管理多项目

    一 需求 一般来说,公司有多个项目,在搭建好SVN服务器之后,就需要使用SVN来实现不在一个项目中的开发人员不能访问其它项目中的代码. 假设: 有3个项目:project1.project2.proj ...

  10. IDEA报compilation failed:internal java compiler error解决方法

    java complier 设置的问题  ,项目中有的配jdk1.6,有的配jdk1.7,版本不一样,导致这样的错误,提示这样的报错时,从file-Settings进入