From e07a504daa453842bce2691feecf4bac916d0e19 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 16 Feb 2022 19:43:16 -0800 Subject: [PATCH] show nav bar when user taps the status bar --- .../Views/Article/WebAppViewCoordinator.swift | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift b/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift index 4eca657e8..cdd0c55a3 100644 --- a/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift +++ b/apple/OmnivoreKit/Sources/Views/Article/WebAppViewCoordinator.swift @@ -16,6 +16,12 @@ final class WebAppViewCoordinator: NSObject { override init() { super.init() } + + var navBarVisibilityRatio: Double = 1.0 { + didSet { + updateNavBarVisibilityRatio(navBarVisibilityRatio) + } + } } extension WebAppViewCoordinator: WKScriptMessageHandler { @@ -51,13 +57,13 @@ extension WebAppViewCoordinator: UIScrollViewDelegate { if yOffset <= 0 { isNavBarHidden = false - updateNavBarVisibilityRatio(1) + navBarVisibilityRatio = 1 return } if yOffset < navBarHeight { let isScrollingUp = yOffsetAtStartOfDrag ?? 0 > yOffset - updateNavBarVisibilityRatio(isScrollingUp ? 1 : 1 - (yOffset / navBarHeight)) + navBarVisibilityRatio = isScrollingUp ? 1 : 1 - (yOffset / navBarHeight) return } @@ -67,17 +73,26 @@ extension WebAppViewCoordinator: UIScrollViewDelegate { let translation = yOffset - yOffsetAtStartOfDrag let ratio = translation < navBarHeight ? 1 - (translation / navBarHeight) : 0 isNavBarHidden = ratio == 0 - updateNavBarVisibilityRatio(ratio) + navBarVisibilityRatio = ratio } } func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { if decelerate, scrollView.contentOffset.y < (yOffsetAtStartOfDrag ?? 0) { - updateNavBarVisibilityRatio(1) + navBarVisibilityRatio = 1 isNavBarHidden = false } yOffsetAtStartOfDrag = nil } + + func scrollViewShouldScrollToTop(_: UIScrollView) -> Bool { + if navBarVisibilityRatio == 1 { + return true + } else { + navBarVisibilityRatio = 1 + return false + } + } } struct WebViewConfig {