masterBtn.addTarget(self, action: #selector(self.masterBed), for: UIControlEvents.touchUpInside)
我已经在子视图中使用了上面的代码,但它没有触发函数masterBed
。子视图中的按钮不可单击
完整代码:
let button = UIButton(frame: CGRect(x: 100, y: 100, width: 100, height: 50))
button.setTitleColor(.gray, for: .normal)
button.center = CGPoint(x: 380, y: 110)
button.setTitle(">", for: .normal)
button.addTarget(self, action: #selector(buttonAction), for: .touchUpInside)
self.addSubview(button)
func buttonAction () {
print("button pressed")
}
5条答案
按热度按时间dwthyt8l1#
我相信子视图的高度和宽度仍然是0,因为按钮没有绑定到任何边缘,按钮似乎定义了它的超级视图的高度。你可以通过设置clipToBounds = true来检查。如果在视图中使用self,调用lazy总是好的。
这可以解决你的问题:
对NSLayoutConstraints有点不确定,因为我使用SnapKit或锚点。但我认为这应该是正确的。
6ie5vjzr2#
我也有同样的问题。要解决这个问题,只需将isUserInteractionEnabled = true设置为PANView(添加按钮子视图的视图)
yk9xbfzb3#
在Masterbed属性里面,输入userinteractionenbaled = true,这将解决问题,其他的东西是addSubview.把它放在子视图项或类上..比如masterBed.addSubView(youurButton),如果你在按钮上使用用户交互,真的没有意义,因为按钮已经是一个为交互创建的对象。这是同样的事情,如果我们把一个按钮放在UIImageView上,我们需要在UIImageView上的属性上激活,以与按钮交互。就像这个样品一样。
我希望这对你有帮助,解决这个问题,干杯!
jvlzgdj94#
可能是你的子视图是出了父视图框架,所以你可以尝试给予相同的框架作为父视图框架,并尝试这样做:
mbzjlibv5#
我已经编辑了你的代码如下,它的工作。
您的ViewController类
HomeView类