Skip to content

Commit a48c33f

Browse files
committed
fix(bottomsheet,ios): crash fix when closing the bottomsheet
1 parent 25b6a66 commit a48c33f

File tree

1 file changed

+11
-6
lines changed

1 file changed

+11
-6
lines changed

Diff for: src/bottomsheet/bottomsheet.ios.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ class MDCBottomSheetControllerDelegateImpl extends NSObject {
5252
// called when clicked on background
5353
const owner = this._owner.get();
5454
owner && owner._unloadBottomSheet();
55-
5655
}
5756
bottomSheetControllerStateChangedState(controller: MDCBottomSheetController, state: MDCSheetState) {
5857
// called when swiped
@@ -128,6 +127,11 @@ function layoutView(controller: IMDLayoutViewController, owner: View): void {
128127
);
129128
const availableSpace = getAvailableSpaceFromParent(owner, frame);
130129

130+
if (!availableSpace.fullscreen) {
131+
// can happen if we get there after the bottomsheet was removed...
132+
return;
133+
}
134+
131135
const startPos = IOSHelper.getPositionFromFrame(frame);
132136
const fullscreenPosition = IOSHelper.getPositionFromFrame(availableSpace.fullscreen);
133137
const safeAreaPosition = IOSHelper.getPositionFromFrame(availableSpace.safeArea);
@@ -209,11 +213,12 @@ function getAvailableSpaceFromParent(view: View, frame: CGRect): { safeArea: CGR
209213
while (parent && !parent.viewController && !(parent.nativeViewProtected instanceof UIScrollView)) {
210214
parent = parent.parent as View;
211215
}
212-
213-
if (parent.nativeViewProtected instanceof UIScrollView) {
214-
scrollView = parent.nativeViewProtected;
215-
} else if (parent.viewController) {
216-
viewControllerView = parent.viewController.view;
216+
if (parent) {
217+
if (parent.nativeViewProtected instanceof UIScrollView) {
218+
scrollView = parent.nativeViewProtected;
219+
} else if (parent.viewController) {
220+
viewControllerView = parent.viewController.view;
221+
}
217222
}
218223
}
219224

0 commit comments

Comments
 (0)