【问题标题】:subview not clickable in UIViewControllerUIViewController 中的子视图不可点击
【发布时间】:2020-01-08 18:38:16
【问题描述】:

我正在尝试在 UIViewController 中嵌入自定义视图。但是在显示时,它是不可点击的,因为它不在 UIView 框架中。

viewDidLoad:

@IBOutlet var theVC_InVC_Test: UIView!

@IBOutlet var TableView: UITableView!

override func viewDidLoad() {
    TableView.delegate = self
    TableView.dataSource = self

    func embed(_ viewController:UIViewController, inView view:UIView){
        viewController.willMove(toParent: self)
        viewController.view.frame = view.bounds
        view.addSubview(viewController.view)
        self.addChild(viewController)
        viewController.didMove(toParent: self)
    }
    embed(sidemenutest1(), inView: theVC_InVC_Test)

}

sidemenutest1 UIViewController:

func popItOver(){
    let PopOverVC = UIStoryboard(name:"Main",bundle: nil).instantiateViewController(withIdentifier: "CoinsPopUp") as! CoinsPopUpViewController
    self.addChild(PopOverVC)
    PopOverVC.view.frame = UIScreen.main.bounds
    self.view.addSubview(PopOverVC.view)
    PopOverVC.didMove(toParent: self)
}

@IBAction func storeAction(_ sender: Any) {
    popItOver()
}

显示正常,但无法点击...当我尝试点击子视图按钮时,点击的是 TableView 而不是子视图。

【问题讨论】:

  • “它无法点击,因为它不在 UIview 框架中。”是的,其父视图之外的视图是不可点击的。如果你知道,问题是什么?
  • 如何解决。我不希望侧面菜单视图适合给定区域,但弹出窗口必须位于中间。
  • 然后不要让弹出的侧边菜单的子视图。或者改变命中测试的工作方式。
  • 必须这样,你有什么建议解决这个问题。
  • 不,它“不一定要这样”。

标签: ios swift uiview uiviewcontroller custom-view


【解决方案1】:

您不应将弹出菜单添加为容器视图控制器。它应该从控制器显示为模态视图控制器,并将其背景视图颜色设置为半透明灰色。

【讨论】:

  • 你能写一个示例代码吗?我不知道怎么做,因为按钮在另一个视图中
  • 按钮位于视图控制器的某处。像其他任何视图控制器一样呈现在该视图控制器上:self.present(vc, animated: true, completion: nil)
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-05
相关资源
最近更新 更多