Xcode WebView.Как добавить кнопку «Закрыть / Готово» при открытии файла PDF - PullRequest
0 голосов
/ 24 мая 2018

У меня есть небольшое приложение для iOS, которое использует WebView.

Когда я открываю PDF-файл из WebView, я не могу закрыть окно или вернуться назад.Как добавить кнопку назад или закрыть при открытии файла PDF.

URL-адрес файла 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 Ответ

0 голосов
/ 24 мая 2018

Вам нужно сделать три вещи

  1. Подтвердить делегатов веб-просмотра
  2. Реализовать делегата веб-просмотра методами webviewDidFinishLoad
  3. Создать методы для действия кнопки

Сначала подтвердите, что загруженный делегат веб-просмотра действительно загрузил

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

Второй делегат веб-просмотра внедряют

-(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

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

Редактировать

Если вы хотите, чтобы кнопка отображалась только в формате PDF, то при выполнении запроса, аналогичного тому, который вы выполняете, загрузилось создание глобального BOOL isPdf и установите его при загрузке запроса, например

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

, а затем в вашем методе делегата веб-просмотра: -

-(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;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...