UIHostingController blocks all touches behind it. You basically have to choose SwiftUI, or UIKit? If you want a SwiftUI overlay over a UIKit view for example, you can't have that.
HostingPassthrough allows you to fix this by inheriting
HostingParentController instead of
UIViewController in the places where you will be adding SwiftUI views through UIHostingController.
makeBackgroundsClear = falsein
forwardBaseTouchesToto another UIView you want to handle your touches.
UIView, in the case that you aren't adding the
UIHostingControllerto a parent view controller. While you should always add the
UIHostingControllerto a parent view controller if possible to correctly manage view lifecycle, there may be instances where you are for example adding SwiftUI components to a reusable custom UIView in which case using
HostingParentViewwould be acceptable.
ScrollViewis messing up your tap targets, you can set
trueso any touches that reach the bottom of a SwiftUI
ScrollView(not the content), are passed to whatever is under it.
Some cool logic will then be applied overriding the
hitTest method, which ignores any touches in parts of a
UIHostingController that don't contain a SwiftUI view and pass it to whatever is underneath instead.
All these views are tappable, even behind the 3 UIHostingController's!
|Last commit: 33 weeks ago|