From 268c20da562e23df459e23b2151bb0129fa164f1 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Thu, 6 Feb 2020 10:36:39 -0800 Subject: [PATCH] Set all the web view delegates to nil when recycling to prevent unintended behaviors. Issue #1777 --- iOS/Article/WebViewController.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift index ea7fd4a50..afd1059ea 100644 --- a/iOS/Article/WebViewController.swift +++ b/iOS/Article/WebViewController.swift @@ -424,6 +424,8 @@ private extension WebViewController { // us from easily swiping between WKWebViews. This hack fixes that. webView.scrollView.contentInset = UIEdgeInsets(top: 0, left: -1, bottom: 0, right: 0) + webView.scrollView.setZoomScale(1.0, animated: false) + self.view.setNeedsLayout() self.view.layoutIfNeeded() @@ -449,6 +451,9 @@ private extension WebViewController { webView.removeFromSuperview() webView.evaluateJavaScript("cancelImageLoad();") + webView.navigationDelegate = nil + webView.uiDelegate = nil + webView.scrollView.delegate = nil webView.configuration.userContentController.removeScriptMessageHandler(forName: MessageName.imageWasClicked) webView.configuration.userContentController.removeScriptMessageHandler(forName: MessageName.imageWasShown) webView.interactions.removeAll() @@ -489,8 +494,7 @@ private extension WebViewController { windowScrollY = 0 - webView.scrollView.setZoomScale(1.0, animated: false) - webView.evaluateJavaScript(render) + webView.evaluateJavaScript(render) }