小编Nic*_*ell的帖子

SwiftUI 将触摸事件从 UIViewControllerRepresentable 传递到后面的 View

我正在开发一个混合使用 UIKit 和 SwiftUI 的项目。我目前有一个 ZStack,我将我的 SwiftUI 内容保存在其中,我需要在该内容之上显示一个 UIViewController。所以我的 ZStack 中的最后一项是 UIViewControllerRepresentable。IE:

ZStack {
   ...
   SwiftUIContent
   ...
   MyUIViewControllerRepresentative() 
}

Run Code Online (Sandbox Code Playgroud)

我覆盖的 UIViewControllerRepresentative 是其他 UIViewControllers 的容器。那些子视图控制器并不总是需要占据全屏,因此 UIViewControllerRepresentative 具有透明背景,因此用户可以与后面的 SwiftUI 内容进行交互。

我面临的问题是 UIViewControllerRepresentative 阻止所有触摸事件到达 SwiftUI 内容。

我试过像这样覆盖 UIViewControllers 视图命中测试:

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
    // return nil if the touch event should propagate to the SwiftUI content
}
Run Code Online (Sandbox Code Playgroud)

我还尝试通过以下方式完全删除视图控制器视图上的触摸事件:

view.isUserInteractionEnabled = false
Run Code Online (Sandbox Code Playgroud)

即使那样也行不通。

任何帮助将非常感激。

touch uikit ios swift swiftui

6
推荐指数
2
解决办法
2308
查看次数

标签 统计

ios ×1

swift ×1

swiftui ×1

touch ×1

uikit ×1