Удар iOS утверждение при отклонении ViewController, содержащего WKWebView, отображающий PDF - PullRequest
0 голосов
/ 04 мая 2020

Я ударил утверждение iOS при отклонении UIViewController. У UIViewController есть UIView, к которому я добавил WKWebView. В это WKWebView я загрузил файл PDF. PDF отображает и функционирует нормально. Когда я закрываю окно, XCode сообщает о подтверждении:

-[PDFExtensionTopView _accessibilityUnregisterRemoteView]: unrecognized selector sent to instance

Если у меня включена точка останова All Objective-C Exceptions, выполнение останавливается. Я могу продолжить, но это довольно разрушительно. Пользователи никогда не видят никаких проблем, так что это просто проблема времени разработки. Я обхожу проблему, отключая точки останова при использовании этого представления, но предпочел бы найти реальное решение. Я на Xcode 11.3.1, использую Obj C в этом классе.

Я создал упрощенный фиктивный проект. Весь код UIViewController ниже. Он представлен из простого UIButton, который ничего не передает этому UIViewController.

Перемещение вызова метода displayPDF происходит в viewWillAppear, но не изменяется, если в DidAppear, DidLoad, et c. Это не связано с указанным c PDF (я пробовал файлы из нескольких источников).

Если я использую отображение HTML (которое помещает фиктивную HTML в веб-просмотр), я делаю не испытывают проблемы.

Я могу просто быть ржавым в Obj C и пропустить что-то очевидное. Есть мысли?

#import "MyPDFViewController.h"
#import <WebKit/WebKit.h>
@interface MyPDFViewController ()
@property (strong, nonatomic) IBOutlet UIView *pdfContainerView;
- (IBAction)closeButtonPressed:(id)sender;
@property (nonatomic, strong) WKWebView *webView;
@end

@implementation MyPDFViewController

-(void)viewWillAppear:(BOOL)animated {
    [super viewDidAppear:animated];
    [self displayPDF];
}

-(void)displayPDF {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"MyPDFFile" ofType:@"pdf"];
    NSData *data = [NSData dataWithContentsOfFile:path];

    self.webView = [[WKWebView alloc] initWithFrame:self.pdfContainerView.frame configuration:[[WKWebViewConfiguration alloc] init]];
    [self.webView loadData:data MIMEType:@"application/pdf" characterEncodingName:@"utf-8" baseURL:[NSURL URLWithString:@""]];

    [self.pdfContainerView addSubview:self.webView];
}

-(void)displayHTML {
    [self.webView loadHTMLString:@"<html><body>Hi.</body></html>" baseURL:nil];
}

- (IBAction)closeButtonPressed:(id)sender {
    [self dismissViewControllerAnimated:YES completion:^{
        //
    }];
}

@end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...