From a82ae267b600851f9ea0d664e2969a9368299dfd Mon Sep 17 00:00:00 2001 From: Yusuf Suleman Date: Sat, 4 Apr 2026 08:03:23 -0500 Subject: [PATCH] fix: tab bar collapses during auto-scroll tabBarMinimizeBehavior needs scrollViewWillBeginDragging to recognize a scroll session. Now ScrollViewDriver calls it on the original delegate when auto-scroll starts, and scrollViewDidEndDragging + scrollViewDidEndDecelerating when it stops. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Features/Reader/Views/ScrollViewDriver.swift | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/ios/Platform/Platform/Features/Reader/Views/ScrollViewDriver.swift b/ios/Platform/Platform/Features/Reader/Views/ScrollViewDriver.swift index 8c154cf..c4d72a0 100644 --- a/ios/Platform/Platform/Features/Reader/Views/ScrollViewDriver.swift +++ b/ios/Platform/Platform/Features/Reader/Views/ScrollViewDriver.swift @@ -78,11 +78,13 @@ struct ScrollViewDriver: UIViewRepresentable { } func startScrolling(in view: UIView) { - // Re-find scroll view if needed if scrollView == nil { findScrollView(from: view) } - guard scrollView != nil else { return } + guard let sv = scrollView else { return } + + // Signal scroll start — triggers tab bar minimize + originalDelegate?.scrollViewWillBeginDragging?(sv) let link = CADisplayLink(target: self, selector: #selector(tick)) link.preferredFrameRateRange = CAFrameRateRange(minimum: 30, maximum: 60) @@ -93,6 +95,12 @@ struct ScrollViewDriver: UIViewRepresentable { func stopScrolling() { displayLink?.invalidate() displayLink = nil + + // Signal scroll end — lets tab bar reappear + if let sv = scrollView { + originalDelegate?.scrollViewDidEndDragging?(sv, willDecelerate: false) + originalDelegate?.scrollViewDidEndDecelerating?(sv) + } } @objc private func tick(_ link: CADisplayLink) {