diff --git a/Packages/Duckable/Sources/Duckable/API.swift b/Packages/Duckable/Sources/Duckable/API.swift index b3d0ebca..fb6da599 100644 --- a/Packages/Duckable/Sources/Duckable/API.swift +++ b/Packages/Duckable/Sources/Duckable/API.swift @@ -10,6 +10,8 @@ import UIKit public protocol DuckableViewController: UIViewController { var duckableDelegate: DuckableViewControllerDelegate? { get set } + func duckableViewControllerShouldDuck() -> Bool + func duckableViewControllerMayAttemptToDuck() func duckableViewControllerWillAnimateDuck(withDuration duration: CGFloat, afterDelay delay: CGFloat) @@ -18,6 +20,7 @@ public protocol DuckableViewController: UIViewController { } extension DuckableViewController { + public func duckableViewControllerShouldDuck() -> Bool { true } public func duckableViewControllerMayAttemptToDuck() {} public func duckableViewControllerWillAnimateDuck(withDuration duration: CGFloat, afterDelay delay: CGFloat) {} public func duckableViewControllerDidFinishAnimatingDuck() {} diff --git a/Packages/Duckable/Sources/Duckable/DuckableContainerViewController.swift b/Packages/Duckable/Sources/Duckable/DuckableContainerViewController.swift index 57946ece..f22baf5c 100644 --- a/Packages/Duckable/Sources/Duckable/DuckableContainerViewController.swift +++ b/Packages/Duckable/Sources/Duckable/DuckableContainerViewController.swift @@ -135,6 +135,10 @@ public class DuckableContainerViewController: UIViewController, DuckableViewCont guard case .presentingDucked(let viewController, isFirstPresentation: _) = state else { return } + guard viewController.duckableViewControllerShouldDuck() else { + viewController.sheetPresentationController!.selectedDetentIdentifier = .large + return + } let placeholder = createPlaceholderForDuckedViewController(viewController) state = .ducked(viewController, placeholder: placeholder) configureChildForDuckedPlaceholder() @@ -235,4 +239,3 @@ extension DuckableContainerViewController: UISheetPresentationControllerDelegate } } } -