Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIButton action not called inside custom view

Tags:

ios

swift

I want to make a custom view, that will contain the following:

  • a green view
  • inside the green view an image view
  • on top of this another white view
  • another image view on top of the white view
  • and on top of all an UIButton

This is my code which is inside a custom view:

func setup() {

    // add green view
    let greenView = UIView(frame: CGRectMake(0, 0, frame.size.width, frame.size.height))
    greenView.backgroundColor = UIColor.greenColor()
    greenView.userInteractionEnabled = true
    addSubview(greenView)

    // add first image
    let image1 = UIImageView(frame: CGRectMake(0, 0, frame.size.width, frame.size.height))
    image1.image = UIImage(named: "checked2")
    image1.userInteractionEnabled = true
    greenView.addSubview(image1)

    // add white image
    let whiteView = UIView(frame: CGRectMake(0, 0, frame.size.width, frame.size.height))
    whiteView.backgroundColor = UIColor.yellowColor()
    whiteView.userInteractionEnabled = true
    greenView.addSubview(whiteView)

    // add second image
    let image2 = UIImageView(frame: CGRectMake(0, 0, frame.size.width, frame.size.height))
    image2.image = UIImage(named: "checked")
    image2.userInteractionEnabled = true
    whiteView.addSubview(image2)

    // add button
    let button = UIButton(frame: CGRectMake(0, 0, frame.size.width, frame.size.height))
    button.backgroundColor = UIColor.redColor()
    button.addTarget(self, action: Selector("animation:"), forControlEvents: UIControlEvents.TouchUpInside)
    button.userInteractionEnabled = true
    addSubview(button)



}

func animation(button: UIButton) {
    print("tapped")
}

The button, which is red appears on top, but the action is not called when clicking on it.
I tried to set userInteractionEnabled on all of the elements, but with no effect.

like image 324
Adrian Avatar asked Mar 02 '26 23:03

Adrian


1 Answers

the code which you have posted is working fine, the problem is with the container view which holds all your views, maybe userInteractionEnabled is false for the container view.

like image 177
Usama Avatar answered Mar 05 '26 15:03

Usama



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!