查看addSubview之前的层次结构:
视图>表格视图
查看addSubview之后的层次结构:
视图>表格视图和视图>自定义视图
调用addSubview后,CustomView显示在TableView的顶部,因为它的帧较小,并且是在TableView之后添加的。但是,我在CustomView中有按钮和文本字段,它们都不起作用。即使当我点击CustomView时,TableView的scrollView似乎也捕捉到了tappershite。如何使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是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

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

关于swift - 自定义 View 在addSubview之后不可单击,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56308279/

10-12 03:43