From 22b9e7b54be30248273c94a6d7903d7120244256 Mon Sep 17 00:00:00 2001 From: Maurice Parker Date: Wed, 11 Mar 2020 19:45:45 -0500 Subject: [PATCH] Don't reset the windowScrollY position on every page render and don't set it if JavaScript returns it corrupted. Issue #1883 --- iOS/Article/WebViewController.swift | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/iOS/Article/WebViewController.swift b/iOS/Article/WebViewController.swift index 528e863b8..1000d771e 100644 --- a/iOS/Article/WebViewController.swift +++ b/iOS/Article/WebViewController.swift @@ -375,8 +375,12 @@ extension WebViewController: UIScrollViewDelegate { } @objc func scrollPositionDidChange() { - webView?.evaluateJavaScript("window.scrollY") { (scrollY, _) in - self.windowScrollY = scrollY as? Int ?? 0 + webView?.evaluateJavaScript("window.scrollY") { (scrollY, error) in + guard error == nil else { return } + let javascriptScrollY = scrollY as? Int ?? 0 + // I don't know why this value gets returned sometimes, but it is in error + guard javascriptScrollY != 33554432 else { return } + self.windowScrollY = javascriptScrollY } } @@ -498,8 +502,6 @@ private extension WebViewController { render = "render(\(json), \(windowScrollY));" } - windowScrollY = 0 - webView.evaluateJavaScript(render) }