From 8d79264ab2b50f8aa29b33ea1c39c08bf296aa69 Mon Sep 17 00:00:00 2001 From: Doug Date: Fri, 7 Feb 2025 09:59:54 +0000 Subject: [PATCH] Find the page view controller's scroll view recursively. --- .../View/TimelineMediaPreviewController.swift | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/ElementX/Sources/Screens/FilePreviewScreen/View/TimelineMediaPreviewController.swift b/ElementX/Sources/Screens/FilePreviewScreen/View/TimelineMediaPreviewController.swift index 726e46bbd5..b52a32cf81 100644 --- a/ElementX/Sources/Screens/FilePreviewScreen/View/TimelineMediaPreviewController.swift +++ b/ElementX/Sources/Screens/FilePreviewScreen/View/TimelineMediaPreviewController.swift @@ -25,7 +25,7 @@ class TimelineMediaPreviewController: QLPreviewController { private var navigationBar: UINavigationBar? { view.subviews.first?.subviews.first { $0 is UINavigationBar } as? UINavigationBar } private var toolbar: UIToolbar? { view.subviews.first?.subviews.last { $0 is UIToolbar } as? UIToolbar } - private var pageScrollView: UIScrollView? { view.subviews.first?.subviews.first?.subviews.first?.subviews.first?.subviews.first?.subviews.first as? UIScrollView } + private var pageScrollView: UIScrollView? { view.firstScrollView() } private var captionView: UIView { captionHostingController.view } override var overrideUserInterfaceStyle: UIUserInterfaceStyle { @@ -344,6 +344,19 @@ private struct DownloadIndicatorView: View { } } +// MARK: - Helpers + +private extension UIView { + func firstScrollView() -> UIScrollView? { + for view in subviews { + if let scrollView = view as? UIScrollView ?? view.firstScrollView() { + return scrollView + } + } + return nil + } +} + private extension UISheetPresentationController.Detent { static func height(_ height: CGFloat) -> UISheetPresentationController.Detent { .custom { _ in height }