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) <noreply@anthropic.com>
This commit is contained in:
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user