Skip to content

Commit 15ab2cf

Browse files
authored
Invoke dismiss completion when BottomSheet was dismissed programmaticly (#37)
* Invoke dismiss completion when BottomSheet was dismissed programmaticly * Make naming more clear * Adjust BottomSheet documentation
1 parent be7cbb5 commit 15ab2cf

5 files changed

Lines changed: 15 additions & 2 deletions

File tree

BottomSheetDemo/Sources/User Interface/Screens/Root/RootViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ final class RootViewController: UIViewController {
6060
true
6161
},
6262
dismissCompletion: {
63-
// handle dismiss completion if user closed bottom sheet by a gesture
63+
// handle bottom sheet dismissal completion
6464
}
6565
)
6666
}

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ presentBottomSheet(
8484
true
8585
},
8686
dismissCompletion: {
87-
// handle dismiss completion if user closed bottom sheet by a gesture
87+
// handle bottom sheet dismissal completion
8888
}
8989
)
9090
```

Sources/BottomSheet/Core/Extensions/UIViewController+Convenience.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ public final class DefaultBottomSheetModalDismissalHandler: BottomSheetModalDism
5050
private let _canBeDismissed: () -> Bool
5151
private let dismissCompletion: (() -> Void)?
5252

53+
private var didInvokeDismissal = false
54+
5355
// MARK: - Init
5456

5557
init(
@@ -75,6 +77,14 @@ public final class DefaultBottomSheetModalDismissalHandler: BottomSheetModalDism
7577
// User dismissed view controller by swipe-gesture, dismiss handler wasn't invoked
7678
dismissCompletion?()
7779
}
80+
81+
didInvokeDismissal = true
82+
}
83+
84+
public func didEndDismissal() {
85+
guard !didInvokeDismissal else { return }
86+
87+
dismissCompletion?()
7888
}
7989
}
8090

Sources/BottomSheet/Core/Presentation/BottomSheetModalDismissalHandler.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,6 @@ public protocol BottomSheetModalDismissalHandler {
1010
var canBeDismissed: Bool { get }
1111

1212
func performDismissal(animated: Bool)
13+
14+
func didEndDismissal()
1315
}

Sources/BottomSheet/Core/Presentation/BottomSheetPresentationController.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,7 @@ public final class BottomSheetPresentationController: UIPresentationController {
144144
removeScrollTrackingIfNeeded()
145145

146146
state = .dismissed
147+
dismissalHandler.didEndDismissal()
147148
} else {
148149
state = .presented
149150
}

0 commit comments

Comments
 (0)