Adding a gesture recognizer to both custom tableview cell and subviews on cell is not working

496 Views Asked by At

I have added gesture recognisers to subviews on my tableview custom cell .

Enabled isUserInteractionEnabled for UIElements

let imageView: UIImageView = {
        let imageView = UIImageView()
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.isUserInteractionEnabled = true
        return imageView
    }()
    
let firstLabel: UILabel = {
    let label = UILabel()
    label.translatesAutoresizingMaskIntoConstraints = false
    label.isUserInteractionEnabled = true
    return label
}()

let someStackView: UIStackView = {
    let stackView = UIStackView()
    stackView.translatesAutoresizingMaskIntoConstraints = false
    stackView.axis = .vertical
    stackView.alignment = .leading
    return stackView
}()

let secondButton: UIButton = {
    let button = UIButton(type: .custom)
    button.isUserInteractionEnabled = true
    button.translatesAutoresizingMaskIntoConstraints = false
    return button
}()

 func setupcustomcellView() {  
    addSubview(imageView)
    addSubview(someStackView)
    someStackView.addArrangedSubviews([
        firstLabel,
        secondButton
    ]) }

I have added gestures using below function :

 private func setupUserInteraction() {
        let iMageTapRecognizer = UITapGestureRecognizer(target: self,
                                                              action: #selector(didTappediMage))
        imageView.addGestureRecognizer(iMageTapRecognizer)
        
        secondButton.addTarget(self,
                                             action: #selector(didTappedtButton),
                                             for: .touchUpInside)
        let firstLabelTapRecognizer = UITapGestureRecognizer(target: self,
                                                              action: #selector(didTappedfirstLabel))
        firstLabel.addGestureRecognizer(firstLabelTapRecognizer)
    }

These gestures are recognised only when I disable user interaction for custom cell content view.

contentView.isUserInteractionEnabled = false

But I want to add gesture to my content view itself. When user clicks on cell I need to perform certain action. But when I make contentView.isUserInteractionEnabled = true, My subviews gesturerecognizers are not recognised. Please guide me why is gesture of UI elements are not recognised when custom cell user interaction is set to true.

1

There are 1 best solutions below

0
MacDeveloper On

Content view is blocking in between . I made below changes and it worked

 func setupcustomcellView() {  
    self.contentView.addSubview(imageView)
    self.contentView.addSubview(someStackView)
    someStackView.addArrangedSubviews([
        firstLabel,
        secondButton
    ]) }