Swift 添加子视图后,自定义视图不可单击

Swift 添加子视图后,自定义视图不可单击,swift,uitableview,uiview,Swift,Uitableview,Uiview,在添加子视图之前查看层次结构: 视图>表格视图 添加子视图后的视图层次结构: 视图>表格视图和视图>自定义视图 调用addSubview后,CustomView显示在TableView的顶部,因为它的框架较小,并且是在TableView之后添加的。但是,我在CustomView中有按钮和文本字段,它们都不起作用。即使在我点击CustomView时,TableView的scrollView似乎也捕捉到了点击手势。如何使CustomView的按钮和文本字段接受触摸 此外,CustomView的背景色

在添加子视图之前查看层次结构:

视图>表格视图

添加子视图后的视图层次结构:

视图>表格视图和视图>自定义视图

调用
addSubview
后,CustomView显示在TableView的顶部,因为它的框架较小,并且是在TableView之后添加的。但是,我在CustomView中有按钮和文本字段,它们都不起作用。即使在我点击CustomView时,TableView的scrollView似乎也捕捉到了点击手势。如何使CustomView的按钮和文本字段接受触摸

此外,CustomView的背景色是清晰的,当CustomView添加到视图层次结构中时,它会显示下面的tableView。我尝试在故事板中设置背景色,并通过编程实现,但仍然无法清除。我怎样才能解决这个问题

class masterViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

//blah blah
@IBOutlet weak var tableView: UITableView! // tableView is added in the storyboard

let newForm = NewFormView(frame: CGRect(x: 0, y: 0, width: 300, height: 300))
    newForm.backgroundColor = UIColor.white
    self.view.addSubview(newForm)
    newForm.translatesAutoresizingMaskIntoConstraints = false
    NSLayoutConstraint.activate([
        newForm.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
        newForm.centerYAnchor.constraint(equalTo: self.view.centerYAnchor)
        ])
}

newForm
是一个
ui视图
nib,在nib脚本中添加了按钮和文本字段

您需要添加宽度和高度约束

NSLayoutConstraint.activate([
    newForm.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
    newForm.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
    newForm.widthAnchor.constraint(equalToConstant:300),
    newForm.heightAnchor.constraint(equalToConstant:300)
])
就像你做的那样

newForm.translatesAutoresizingMaskIntoConstraints = false

您的帧在接收触摸时无效且不活动

显示您是如何添加的,vc是否也是UITableViewController?@Sh_Khan代码已添加,否vc是一个UIViewController,根据您提供的信息,在故事板中添加了UITableView,转到
Main.storyboard
并选择该
CustomView
,然后转到
Attributes Inspector
并单击
用户交互启用
复选框上的勾选。如果已经勾选,则检查post。它解释了如何将视图带到堆栈顶部。@Mihir只是尝试了一下,没有成功。我知道,
CustomView``位于顶部是因为1。如果
CustomView``不在顶部,我将无法看到按钮和标签,因为它们将被
tableView
和2隐藏。我在Xcode中使用了视图层次结构调试,以确保整个
CustomView
addSubview
之后位于视图层次结构的顶部。我是个白痴哈哈,我生命中的一个小时已经过去了,非常感谢!