首页 > 解决方案 > 如何将目标添加到在 swift 5 中以编程方式创建的视图内的按钮

问题描述

我正在尝试以我的按钮为目标,该按钮由以下代码创建:

let btn : UIButton = {

    let btn = UIButton()
    btn.translatesAutoresizingMaskIntoConstraints = false
    btn.widthAnchor.constraint(equalToConstant: 100).isActive = true
    btn.heightAnchor.constraint(equalToConstant: 100).isActive = true
    btn.clipsToBounds = true
    btn.layer.cornerRadius = btn.frame.width / 2
    btn.layer.masksToBounds = false
    btn.setBackgroundImage(UIImage(named: "level01"), for: .normal)
    btn.tag = 1
    btn.addTarget(self, action: #selector(buttonClicked), for: .touchUpInside)
    btn.isUserInteractionEnabled = true

    return btn
}()

此按钮插入到同样以编程方式创建的视图中,然后插入到堆栈视图中,然后滚动视图。

let scrollView = UIScrollView()
let contentView = UIStackView()

override func viewDidLoad() {
    super.viewDidLoad()
    setupScrollView()
    setupViews()
}


@objc func buttonClicked () {
    print("user tapped button")
}

func setupScrollView(){
    scrollView.translatesAutoresizingMaskIntoConstraints = false
    contentView.translatesAutoresizingMaskIntoConstraints = false

    self.view.addSubview(containerView)
    self.containerView.addSubview(scrollView)
    scrollView.addSubview(contentView)

    scrollView.centerXAnchor.constraint(equalTo: containerView.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: containerView.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: containerView.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor).isActive = true

    contentView.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor).isActive = true
    contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true
    contentView.topAnchor.constraint(equalTo: scrollView.topAnchor).isActive = true
    contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor).isActive = true
}

func setupViews(){
    contentView.addSubview(view1)
    view1.centerXAnchor.constraint(equalTo: contentView.centerXAnchor).isActive = true
    view1.topAnchor.constraint(equalTo: contentView.topAnchor).isActive = true
    view1.widthAnchor.constraint(equalTo: contentView.widthAnchor, multiplier: 3/4).isActive = true
    view1.heightAnchor.constraint(equalToConstant: 100).isActive = true

    view1.addSubview(btn)
    view1.bringSubviewToFront(btn)
}

let view1: UIView = {
    let view = UIView()
    view.backgroundColor = UIColor.clear
    view.translatesAutoresizingMaskIntoConstraints = false
    return view
}()

当试图按下按钮时它什么也不做,我在问我是否还遗漏了什么。

提前感谢您的帮助。

标签: iosuibuttonuikitswift5

解决方案



推荐阅读