How to create a click event on a label in uiScrollview??

I've created a view dynamically with quite a bit of complexity: There is a uiView inside a uiScrollView and there are 10 uiLabel inside it. I'm trying to create a click event on uiLabel, but it doesn't work. But if I attach a click event to uiScrollView, it works, but I don't know which uiLabel was clicked. How can I make a uiLabel clickable and check which uiLabel was clicked?


class ViewController: UIViewController {
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let scrollView = UIScrollView()
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        scrollView.backgroundColor = UIColor.lightGray
        view.addSubview(scrollView)
        
        NSLayoutConstraint.activate([
            scrollView.topAnchor.constraint(equalTo: view.topAnchor),
            scrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor)
        ])
        
        let contentView = UIView()
        contentView.translatesAutoresizingMaskIntoConstraints = false
        scrollView.addSubview(contentView)

        NSLayoutConstraint.activate([
            contentView.topAnchor.constraint(equalTo: scrollView.topAnchor),
            contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
            contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
            contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
            contentView.widthAnchor.constraint(equalTo: scrollView.widthAnchor)
        ])
        
        var labelArray = [UILabel]()

        for i in 0..<10 {
            let label = UILabel()
            label.translatesAutoresizingMaskIntoConstraints = false
            label.text = "Label \(i+1)"
            label.textAlignment = .center
            label.backgroundColor = UIColor.white
            contentView.addSubview(label)
            
            labelArray.append(label)

            NSLayoutConstraint.activate([
                label.topAnchor.constraint(equalTo: contentView.topAnchor, constant: CGFloat(50 * i + 20)),
                label.leadingAnchor.constraint(equalTo: contentView.leadingAnchor, constant: 20),
                label.trailingAnchor.constraint(equalTo: contentView.trailingAnchor, constant: -20),
                label.heightAnchor.constraint(equalToConstant: 40)
            ])
            
            let tapGesture = UITapGestureRecognizer(target: self, action: #selector(labelTapped(_:)))
            label.addGestureRecognizer(tapGesture)
            label.isUserInteractionEnabled = true
        }
    }
    
    @objc func labelTapped(_ sender: UITapGestureRecognizer) {
        print("clicked")
        if let label = sender.view as? UILabel {
            print("Tapped Label: \(label.text ?? "")")
        }
    }
}