iOS webView与H5的交互(返回页面的处理)
来源:互联网 发布:网络职业 编辑:程序博客网 时间:2024/05/14 02:46
当在一个页面触发一个事件跳转到一个H5页面时,H5页面内部也可以进行下一级的跳转,这个时候我们导航栏使用苹果原生的返回按钮就需要处理页面中的返回效果。是返回到pushH5的上一级页面还是返回H5内部的上一级页面?
- (void)viewDidLoad { [super viewDidLoad];UIButton * backButton = [UIButton buttonWithType:UIButtonTypeSystem]; backButton.frame = CGRectMake(10, 20, 20, 20); [backButton setBackgroundImage:[UIImage imageNamed:@"goBackImage"] forState:UIControlStateNormal]; [backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithCustomView:backButton]; self.webView =[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)]; _webView.backgroundColor = [UIColor clearColor]; for (UIView * views in [self.webView subviews]) { if ([views isKindOfClass:[UIScrollView class]]) { [(UIScrollView *)views setShowsHorizontalScrollIndicator:NO]; [(UIScrollView *)views setShowsVerticalScrollIndicator:NO]; for (UIView * inScrollView in views.subviews) { if ([inScrollView isKindOfClass:[UIImageView class]]) { inScrollView.hidden = YES; } } } } NSString * urlString = [NSString stringWithFormat:@"%@xxxxxxxx",BASE_URL]; NSURL * url = [NSURL URLWithString:urlString]; NSURLRequest * request = [NSURLRequest requestWithURL:url]; _webView.delegate = self; [_webView loadRequest:request]; [self.view addSubview:self.webView];}- (void)back:(UIBarButtonItem *)btn{ if ([self.webView canGoBack]) { [self.webView goBack]; }else{ [self.view resignFirstResponder]; [self.navigationController popViewControllerAnimated:YES]; }}#pragma mark - webViewDelegate- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString * requestString = [[request URL] absoluteString]; requestString = [requestString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; if ([requestString hasPrefix:@"goback:"]) { [self.navigationController popViewControllerAnimated:YES]; }else{ [self.webView goBack]; } return YES;}- (void)webViewDidFinishLoad:(UIWebView *)webView{ [SVProgressHUD dismiss]; NSString * title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"]; self.title = title; self.currentURL = webView.request.URL.absoluteString; NSLog(@"title-%@--url-%@--",self.title,self.currentURL); NSString *lJs = @"document.documentElement.innerHTML"; self.currentHTML = [webView stringByEvaluatingJavaScriptFromString:lJs]; NSLog(@"%@",webView.request.URL.path); NSString *js = [NSString stringWithFormat:@"paySuccess('%@')",@"test"]; [webView stringByEvaluatingJavaScriptFromString:js];}
0 0