Skip to content

Commit bf5475b

Browse files
authored
fix(ios): prevent crash when preview target view is unmounted (#138)
1 parent 9b931b0 commit bf5475b

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

ios/ContextMenuView.m

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,21 @@ - (UITargetedPreview *)contextMenuInteraction:(UIContextMenuInteraction *)intera
119119
}
120120

121121
- (UITargetedPreview *)contextMenuInteraction:(UIContextMenuInteraction *)interaction previewForDismissingMenuWithConfiguration:(UIContextMenuConfiguration *)configuration API_AVAILABLE(ios(13.0)) {
122-
UIPreviewTarget* previewTarget = [[UIPreviewTarget alloc] initWithContainer:self center:self.reactSubviews.firstObject.center];
122+
UIView *hostView = self.reactSubviews.firstObject;
123+
124+
if (!hostView.window) {
125+
// The view is no longer available; it was unmounted.
126+
return nil;
127+
}
128+
129+
UIPreviewTarget* previewTarget = [[UIPreviewTarget alloc] initWithContainer:self center:hostView.center];
123130
UIPreviewParameters* previewParams = [[UIPreviewParameters alloc] init];
124131

125132
if (_previewBackgroundColor != nil) {
126133
previewParams.backgroundColor = _previewBackgroundColor;
127134
}
128-
129-
return [[UITargetedPreview alloc] initWithView:self.reactSubviews.firstObject
135+
136+
return [[UITargetedPreview alloc] initWithView:hostView
130137
parameters:previewParams
131138
target:previewTarget];
132139
}

0 commit comments

Comments
 (0)