要使addChild视图控制器上的点击有效,您需要确保以下几点:
childViewController.view.isUserInteractionEnabled = true
childViewController.view.frame = parentViewController.view.bounds
parentViewController.addChild(childViewController)
parentViewController.view.addSubview(childViewController.view)
childViewController.didMove(toParent: parentViewController)
完整的示例代码如下:
class ParentViewController: UIViewController {
// 创建子视图控制器
let childViewController = ChildViewController()
override func viewDidLoad() {
super.viewDidLoad()
// 设置子视图控制器的frame与父视图的bounds一致
childViewController.view.frame = view.bounds
// 将子视图控制器添加到父视图控制器
addChild(childViewController)
view.addSubview(childViewController.view)
childViewController.didMove(toParent: self)
}
}
class ChildViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// 启用用户交互
view.isUserInteractionEnabled = true
// 添加点击事件
let tapGesture = UITapGestureRecognizer(target: self, action: #selector(handleTap))
view.addGestureRecognizer(tapGesture)
}
@objc func handleTap() {
print("子视图控制器被点击")
}
}
需要注意的是,如果您在子视图控制器中的view上添加了其他手势识别器(如UITapGestureRecognizer),请确保这些手势识别器的用户交互也是启用的。
下一篇:addch中出现了意外的字符