Xcode Web 视图.打开pdf文件时如何添加关闭/完成按钮 [英] Xcode WebView. How to add close/done button when pdf file is opened

查看:30
本文介绍了Xcode Web 视图.打开pdf文件时如何添加关闭/完成按钮的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个使用 WebView 的 iOS 小应用.

I have a small app for iOS that uses WebView.

当我从 WebView 打开 PDF 文件时,我无法关闭窗口或返回.如何在打开 PDF 文件时添加返回或关闭按钮.

When I open a PDF file from WebView, I can't close the window or go back. How to add the button back or close, when the PDF file is opened.

PDF 文件的网址 |PDF 文件被打开

#import "HomeController.h"

@interface HomeController ()

@end

@implementation HomeController

- (void)viewDidLoad {
    [super viewDidLoad];
    NSURL *myURL = [NSURL URLWithString:@"http://test.mysite.com"];
     NSURLRequest *myRequest = [NSURLRequest requestWithURL:myURL];
     [myWebView loadRequest:myRequest];
}

@end

已编辑

    //I create global BOOL isPdf in header file

    @property (nonatomic, assign) BOOL isPdf;

    //I make request in view did load

myWebView.delegate=self;

    NSURL *myURL = [NSURL URLWithString:@"http://test.mysite.com"];
_isPdf = [myURL.lastPathComponent isEqualToString:@".pdf"];
 NSURLRequest *myRequest = [NSURLRequest requestWithURL:myURL];
 [myWebView loadRequest:myRequest];

 NSLog(@"Run WebView with the URL");

    //And then in my webview delegate method

    - (void)webViewDidFinishLoad:(UIWebView *)webView{
        if (_isPdf) {
            UIBarButtonItem *backButton=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:@selector(backButtonPressed)];
            self.navigationItem.rightBarButtonItem=backButton;
            NSLog(@"Show back button %i", _isPdf);
        }else{
            self.navigationItem.rightBarButtonItem=nil;
            NSLog(@"Not show back button %i", _isPdf);
        }
    }

// Add backButtonPressed method

-(void)backButtonPressed{
    //update the method according to your need
    if (myWebView.canGoBack) {
        [myWebView goBack];
    }else{
        [self.navigationController popViewControllerAnimated:true];
    }
}

推荐答案

你需要做三件事

  1. 确认 webview 委托
  2. 实现 webview 委托 webviewDidFinishLoad 方法
  3. 为按钮操作创建方法

首先确认view中的webview delegate确实加载了

First confirm the webview delegate in view did load

webview.delegate=self //(don't forgot to add the webview protocol <UIWebviewDelegate>)

第二个实现 webview 委托

Second implement webview delegate

-(void)webViewDidFinishLoad:(UIWebView *)webView{
  if (webView.canGoBack) {
      UIBarButtonItem *backButton=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:@selector(backButtonPressed)];
      self.navigationItem.rightBarButtonItem=backButton;
  }else{
      self.navigationItem.rightBarButtonItem=nil;
  }
}

第三个添加backButtonPressed方法

Third add backButtonPressed method

-(void)backButtonPressed{
   //update the method according to your need
   if (webview.canGoBack) {
       [webview goBack]
   }else{
       [self.navigationController popViewControllerAnimated:true];
   }
}

编辑

如果您只想在 pdf 上显示按钮,那么当您像在视图中所做的那样发出请求时,请创建一个全局 BOOL isPdf 并在您像

if you want to show button only on pdf then when you make request like your doing in view did load create a global BOOL isPdf and set it when you load request like

 NSURL *myURL = [NSURL URLWithString:@"http://test.mysite.com"];
 isPdf=[myURL.lastPathComponent isEqualToString:@".pdf"];

然后在您的 webview 委托方法中:-

and then in your webview delegate method :-

-(void)webViewDidFinishLoad:(UIWebView *)webView{
  if (isPdf) {
      UIBarButtonItem *backButton=[[UIBarButtonItem alloc]initWithTitle:@"Back" style:UIBarButtonItemStyleDone target:self action:@selector(backButtonPressed)];
      self.navigationItem.rightBarButtonItem=backButton;
  }else{
      self.navigationItem.rightBarButtonItem=nil;
  }
}

这篇关于Xcode Web 视图.打开pdf文件时如何添加关闭/完成按钮的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆