自定义按钮无法轻按

Jaq*_*ine 0 uibutton ios swift

我已经在代码中创建了5个自定义按钮,它们都完美显示。但是,由于某些原因,当它们像未激活一样被点击时,没有任何响应。我在ViewDidLoad中添加了子视图,并在单独的函数中对约束进行了编码,这并不重要,我对此并不相信,因此请告诉我是否需要这样做,以增进您的理解。

代码:

let backgroundImageView: UIImageView = {
let imageView = UIImageView()
imageView.translatesAutoresizingMaskIntoConstraints = false
imageView.layer.masksToBounds = true

return imageView
}()

let transparentView: UIView = {
let view = UIView()
view.backgroundColor = UIColor.black
view.backgroundColor = view.backgroundColor?.withAlphaComponent(0.5)

return view
}()


let button1: UIButton = {
let button = UIButton(type: .custom)
button.addTarget(self, action: #selector(button1Pressed), for: .touchUpInside)
button.setImage(UIImage(named: "button"), for: .normal)
button.isUserInteractionEnabled = true


return button
}()


override func viewDidLoad() {
super.viewDidLoad()

addSubviews()

setupViewConstraints()

}

func addSubviews() {
self.view.addSubview(backgroundImageView)
backgroundImageView.addSubview(transparentView)
transparentView.addSubview(button1)
}

func setupViewConstraints() {

backgroundImageView.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)

transparentView.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)

 button1.anchor(top: nil, left: nil, bottom: view.bottomAnchor, right: nil, paddingTop: 0, paddingLeft: 0, paddingBottom: 20, paddingRight: 0, width: 80, height: 80)
  button1.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true

}

@objc func button1Pressed() {
print("Button1 pressed")
}
Run Code Online (Sandbox Code Playgroud)

Raj*_*r R 7

默认情况下,在UIImageView实例中禁用用户交互。并且当超级视图的用户交互被禁用时,即使您设置了子视图,其子视图也无法接收用户交互button.isUserInteractionEnabled = true

因此,添加imageView.isUserInteractionEnabled = truebackgroundImageView关闭

let backgroundImageView: UIImageView = {
    let imageView = UIImageView()
    imageView.isUserInteractionEnabled = true
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.layer.masksToBounds = true
    return imageView
}()
Run Code Online (Sandbox Code Playgroud)