I have an assumption why it is not accepting UIControlEventTouchUpInside :
I had two "BannerView" (Advertising) in two different ViewControllers. In one, it just worked perfectly in the other, I saw how it touched UIButton , and the second image appeared (darker). But the selector did not hit. Then I realized that Up Event is absorbed by a UISwipeGestureRecognizer from a UIImageView below. Some Recognizer compete with each other. I was looking for a review to see the witches, but found nothing.
Another solution: If you see that ButtonState is not changing, you need to see if you have a view above your button.
source share