touchesBegan not called in UIView subclass

I know there already are some questions about this but I couldn’t find a solution.
There is a very simple code that works just fine on one of my projects but not on an another one:

Here is the code for subclass of UIView.

  • Draggable UIView stops posting touchesBegan after being added to UIScrollView
  • Move two paddles at same time in SpriteKit + Swift
  • Stretchy UIBezierPath line?
  • Dragging views on a scroll view: touchesBegan is received, but no touchesEnded or touchesCancelled
  • Push Viewcontroller from within other ViewControllers that are not on top of Navstack?
  • touchesBegan, touchesEnded, touchesMoved for moving UIView
  • import UIKit
    class test : UIView {
        init(frame: CGRect, color: UIColor) {
            super.init(frame: frame)
            self.backgroundColor = color
            self.userInteractionEnabled = true
        required init(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
            super.touchesBegan(touches, withEvent: event)
            var alert = UIAlertView()
            alert.title = "lol"
            alert.message = "lol"

    I’m sure the solution is quite simple but I can’t find it.

    2 Solutions Collect From Internet About “touchesBegan not called in UIView subclass”

    You need to make sure that userInteractionEnabled is enabled on all of the superviews of your view. If any of the superviews have this property set to false, the touch events won’t be processed for them or any of their subviews.

    Maybe some of the superviews has the userInteractionEnabled set to “false”?