zoukankan      html  css  js  c++  java
  • ios -仿微信有多级网页时,显示返回跟关闭按钮

     

    @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;

    }

  • 相关阅读:
    Python staticmethod
    pandas通过字典生成dataframe
    关于series的统计
    python的*args与**kwargs
    python global
    matplotlib画子图时设置总标题
    matplotlib两种画散点图的方式
    idea下web工程的编译和输出设置
    Vue&webpack入门实践
    《图解设计模式》读书笔记6-1 VISITOR模式
  • 原文地址:https://www.cnblogs.com/shenlaiyaoshi/p/8493720.html
Copyright © 2011-2022 走看看