Discard changes to modules/bottom-sheet/ios/SheetView.swift

This commit is contained in:
hailey
2025-05-19 11:35:25 -07:00
committed by Samuel Newman
parent 151492ec3d
commit 5399476e15
+17 -18
View File
@@ -5,7 +5,7 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
// Views // Views
private var sheetVc: SheetViewController? private var sheetVc: SheetViewController?
private var innerView: UIView? private var innerView: UIView?
private var touchHandler: RCTSurfaceTouchHandler? private var touchHandler: RCTTouchHandler?
// Events // Events
private let onAttemptDismiss = EventDispatcher() private let onAttemptDismiss = EventDispatcher()
@@ -73,7 +73,7 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
required init (appContext: AppContext? = nil) { required init (appContext: AppContext? = nil) {
super.init(appContext: appContext) super.init(appContext: appContext)
self.maxHeight = Util.getScreenHeight() self.maxHeight = Util.getScreenHeight()
self.touchHandler = RCTSurfaceTouchHandler() self.touchHandler = RCTTouchHandler(bridge: appContext?.reactBridge)
SheetManager.shared.add(self) SheetManager.shared.add(self)
} }
@@ -81,27 +81,25 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
self.destroy() self.destroy()
} }
override func mountChildComponentView( // We don't want this view to actually get added to the tree, so we'll simply store it for adding
_ childComponentView: UIView, // to the SheetViewController
index: Int override func insertReactSubview(_ subview: UIView!, at atIndex: Int) {
) { self.touchHandler?.attach(to: subview)
self.innerView = childComponentView self.innerView = subview
touchHandler?.attach(to: childComponentView)
}
override func unmountChildComponentView(
_ childComponentView: UIView,
index: Int
) {
touchHandler?.detach(from: childComponentView)
if self.innerView === childComponentView {
self.innerView = nil
}
} }
// We'll grab the content height from here so we know the initial detent to set // We'll grab the content height from here so we know the initial detent to set
override func layoutSubviews() { override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()
guard let innerView = self.innerView else {
return
}
if innerView.subviews.count != 1 {
return
}
self.present() self.present()
} }
@@ -109,6 +107,7 @@ class SheetView: ExpoView, UISheetPresentationControllerDelegate {
self.isClosing = false self.isClosing = false
self.isOpen = false self.isOpen = false
self.sheetVc = nil self.sheetVc = nil
self.touchHandler?.detach(from: self.innerView)
self.touchHandler = nil self.touchHandler = nil
self.innerView = nil self.innerView = nil
SheetManager.shared.remove(self) SheetManager.shared.remove(self)