diff --git a/Mastodon/Protocol/ScrollViewContainer.swift b/Mastodon/Protocol/ScrollViewContainer.swift index ae79d0e0f..8e3fda06e 100644 --- a/Mastodon/Protocol/ScrollViewContainer.swift +++ b/Mastodon/Protocol/ScrollViewContainer.swift @@ -14,6 +14,12 @@ protocol ScrollViewContainer: UIViewController { extension ScrollViewContainer { func scrollToTop(animated: Bool) { - scrollView.scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) + scrollView.scrollToTop(animated: animated) + } +} + +extension UIScrollView { + func scrollToTop(animated: Bool) { + scrollRectToVisible(CGRect(origin: .zero, size: CGSize(width: 1, height: 1)), animated: animated) } } diff --git a/Mastodon/Scene/Discovery/DiscoveryViewController.swift b/Mastodon/Scene/Discovery/DiscoveryViewController.swift index 33bbefaef..969ba5534 100644 --- a/Mastodon/Scene/Discovery/DiscoveryViewController.swift +++ b/Mastodon/Scene/Discovery/DiscoveryViewController.swift @@ -131,6 +131,13 @@ extension DiscoveryViewController: ScrollViewContainer { var scrollView: UIScrollView { return (currentViewController as? ScrollViewContainer)?.scrollView ?? UIScrollView() } + func scrollToTop(animated: Bool) { + if scrollView.contentOffset.y <= 0 { + scrollToPage(.first, animated: animated) + } else { + scrollView.scrollToTop(animated: animated) + } + } } extension DiscoveryViewController { diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index b5259dcc4..7efef2c00 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -190,6 +190,16 @@ extension SearchViewController: UISearchControllerDelegate { } } +// MARK: - ScrollViewContainer +extension SearchViewController: ScrollViewContainer { + var scrollView: UIScrollView { + discoveryViewController?.scrollView ?? UIScrollView() + } + func scrollToTop(animated: Bool) { + discoveryViewController?.scrollToTop(animated: animated) + } +} + // MARK: - UICollectionViewDelegate //extension SearchViewController: UICollectionViewDelegate { // func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {