如果我将 UIHostingController 添加为子项,则无法点击按钮(其视图不透明设置为 false)

Cha*_* Dp 6 storyboard uikit swift swiftui

查看层次结构

  1. 视图控制器
  2. 托管视图控制器

在此输入图像描述 在此输入图像描述

讨论

viewDidLoad的 ViewController 中,它将添加UIHostingController并将属性设置isOpaquefalse因为用户可以点击 ViewController 中的按钮。

不幸的是,我无法点击按钮

let ipView = UIHostingController(rootView: InputView())

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view.
    addChild(ipView)
    view.addSubview(ipView.view)

    // It's can't tap the button in ViewController
    // even I set the isOpaque = false
    ipView.view.backgroundColor = .clear
    ipView.view.isOpaque = false
    
    ipView.view.translatesAutoresizingMaskIntoConstraints = false
    ipView.view.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    ipView.view.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
    ipView.view.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
    ipView.view.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
}
Run Code Online (Sandbox Code Playgroud)

该按钮应该触发点击事件,但如果我添加则不会UIHostingController

@IBAction func buttonDidTap(_ sender: UIButton) {
    sender.setTitle("Tapped", for: .normal)
}
Run Code Online (Sandbox Code Playgroud)