diff --git a/iOS/Article/ArticleViewController.swift b/iOS/Article/ArticleViewController.swift index 45092950a..7ea133540 100644 --- a/iOS/Article/ArticleViewController.swift +++ b/iOS/Article/ArticleViewController.swift @@ -34,7 +34,8 @@ class ArticleViewController: UIViewController { @IBOutlet private weak var starBarButtonItem: UIBarButtonItem! @IBOutlet private weak var actionBarButtonItem: UIBarButtonItem! @IBOutlet private weak var webViewContainer: UIView! - + @IBOutlet private weak var showToolbarView: UIView! + private var articleExtractorButton: ArticleExtractorButton = { let button = ArticleExtractorButton(type: .system) button.frame = CGRect(x: 0, y: 0, width: 44.0, height: 44.0) @@ -103,12 +104,15 @@ class ArticleViewController: UIViewController { articleExtractorButton.addTarget(self, action: #selector(toggleArticleExtractor(_:)), for: .touchUpInside) toolbarItems?.insert(UIBarButtonItem(customView: articleExtractorButton), at: 6) + showToolbarView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(showToolBar(_:)))) + ArticleViewControllerWebViewProvider.shared.dequeueWebView() { webView in self.webView = webView self.webViewContainer.addChildAndPin(webView) webView.navigationDelegate = self webView.uiDelegate = self + webView.scrollView.delegate = self webView.configuration.userContentController.add(WrapperScriptMessageHandler(self), name: MessageName.imageWasClicked) webView.configuration.userContentController.add(WrapperScriptMessageHandler(self), name: MessageName.imageWasShown) @@ -205,7 +209,11 @@ class ArticleViewController: UIViewController { } // MARK: Actions - + + @objc func showToolBar(_ sender: Any) { + showToolbar() + } + @IBAction func toggleArticleExtractor(_ sender: Any) { coordinator.toggleArticleExtractor() } @@ -287,6 +295,23 @@ class ArticleViewController: UIViewController { } +extension ArticleViewController: UIScrollViewDelegate { + + func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer) { + if velocity.y > 0.5 { + hideToolbar() + } else if velocity.y < -1.0 { + showToolbar() + } + } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + if scrollView.contentOffset.y < 20 { + showToolbar() + } + } +} + // MARK: WKNavigationDelegate extension ArticleViewController: WKNavigationDelegate { @@ -418,4 +443,16 @@ private extension ArticleViewController { } } + func showToolbar() { + if traitCollection.userInterfaceIdiom == .phone && coordinator.isRootSplitCollapsed { + navigationController?.setToolbarHidden(false, animated: true) + } + } + + func hideToolbar() { + if traitCollection.userInterfaceIdiom == .phone && coordinator.isRootSplitCollapsed { + navigationController?.setToolbarHidden(true, animated: true) + } + } + } diff --git a/iOS/Base.lproj/Main.storyboard b/iOS/Base.lproj/Main.storyboard index 728f59133..32bdaf65e 100644 --- a/iOS/Base.lproj/Main.storyboard +++ b/iOS/Base.lproj/Main.storyboard @@ -20,11 +20,21 @@ + + + + + + + + + + @@ -100,6 +110,7 @@ +