WKWebView показывает серый фон, а содержимое PDF становится невидимым при переключении viewcontroller - PullRequest
0 голосов
/ 10 октября 2018

Я загружаю файл pdf из основного комплекта или каталога документов в WKWebView.Первоначально он загружается идеально, но показывает серый фон, а содержимое PDF становится невидимым, если я возвращаюсь к тому же экрану после переключения вкладок в контроллере вкладок.Вот код, который я использую для загрузки

class ViewController: UIViewController {

    @IBOutlet var progressView: UIProgressView!
    @IBOutlet var webView: WKWebView!

    var pdfURLS: URL?

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        pdfURLS = Bundle.main.url(forResource: "97_pdf", withExtension: "pdf", subdirectory: nil, localization: nil)
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        print("pdfURLS: \(String(describing: pdfURLS))")
    }

    @IBAction func loadAction(_ sender: Any) {
        if let pdfURL = pdfURLS  {
            self.webView.loadFileURL(pdfURL, allowingReadAccessTo: pdfURL.deletingLastPathComponent())
        }
    }
}

Кто-то имеет представление о проблеме? enter image description here

Ссылка на изображение прилагается.Нет такой проблемы, если я использую UIWebView, который устарел, но я не хочу использовать устаревшую библиотеку.

1 Ответ

0 голосов
/ 09 января 2019

Мы столкнулись с этой проблемой и в Firefox для iOS:

https://bugzilla.mozilla.org/show_bug.cgi?id=1516524

Я также ссылался на этот пост SO в ошибке WebKit:

https://bugs.webkit.org/show_bug.cgi?id=193281

В настоящее время мы нашли обходной путь:

let previousZoomScale = webView.scrollView.zoomScale
let previousContentOffset = webView.scrollView.contentOffset

if let currentItem = webView.backForwardList.currentItem {
    webView.go(to: currentItem)
}

DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(100)) {
    webView.scrollView.setZoomScale(previousZoomScale, animated: false)
    webView.scrollView.setContentOffset(previousContentOffset, animated: false)
}

По сути, мы возвращаемся к URL из списка истории перемотки назад / вперед, который перерисовывает PDF, а затем мы восстанавливаем позицию прокрутки./ масштабирование.Это не здорово, но работает.

...