【发布时间】:2022-11-05 01:15:07
【问题描述】:
我有一个使用 UIHostingController 嵌入现有 UIViewController 的 SwiftUI 视图。 SwiftUI 视图很简单,实际上我可以将其简化为这段代码并重现问题:
let hostingController = UIHostingController(rootView: Button {
print("tapped")
} label {
Text("Tap")
}
hostingController 作为一个孩子添加到我现有的视图控制器中,如下所示:
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(hostingController.view)
// Code to set up autolayout constraints omitted.
addChild(hostingController)
hostingController.didMove(toParent: self)
}
该按钮在画布预览中可点击,但在模拟器或真实设备上不可点击。没有手势识别器或其他视图覆盖 UIHostingController 的视图。我尝试使用.onTapGesture(perform:) 而不是按钮,但这也不起作用。为了让事情变得更奇怪,我可以添加一个 ScrollView 作为我的 SwiftUI 和滚动工作的子视图。为什么我的按钮不起作用?
【问题讨论】: