title: Swift - Button not clickable after UIView is added
body: <p>So, I have a class that creates Confetti subclass of <code>UIView</code>, which is run when a high score is reached. But, when the confetti is run, my buttons becomes unclickable, which makes its problematic. When the confetti is not run, my button is clickable and there is no error. Please help me, I been trying to fix this for hours. </p>
  
  <p>Here is my code where Confetti is run:</p>
  
  <pre><code>override func viewDidLoad() {
      super.viewDidLoad()
      if UserDefaults.standard.integer(forKey: "Score") &gt; UserDefaults.standard.integer(forKey: "Highscore") {
  confettiView.startConfetti()
          delay(3, completion: {
              confettiView.stopConfetti()
          })
  }
  </code></pre>
  
  <p>Here is my code where the Confetti is created:</p>
  
  <pre><code>import UIKit
  import QuartzCore
  
  public class SAConfettiView: UIView {
  
      public enum ConfettiType {
          case Confetti
          case Triangle
          case Star
          case Diamond
          case Image(UIImage)
      }
  
      var emitter: CAEmitterLayer!
      public var colors: [UIColor]!
      public var intensity: Float!
      public var type: ConfettiType!
      private var active :Bool!
  
      required public init?(coder aDecoder: NSCoder) {
          super.init(coder: aDecoder)
          setup()
      }
  
      public override init(frame: CGRect) {
          super.init(frame: frame)
          setup()
      }
  
      func setup() {
          colors = [UIColor(red:0.95, green:0.40, blue:0.27, alpha:1.0),
          UIColor(red:1.00, green:0.78, blue:0.36, alpha:1.0),
          UIColor(red:0.48, green:0.78, blue:0.64, alpha:1.0),
          UIColor(red:0.30, green:0.76, blue:0.85, alpha:1.0),
          UIColor(red:0.58, green:0.39, blue:0.55, alpha:1.0)]
          intensity = 0.5
          type = .Confetti
          active = false
      }
  
      public func startConfetti() {
          emitter = CAEmitterLayer()
          emitter.emitterPosition = CGPoint(x: frame.size.width / 2.0, y: 0)
          emitter.emitterShape = kCAEmitterLayerLine
          emitter.emitterSize = CGSize(width: frame.size.width, height: 1)
  
          var cells = [CAEmitterCell]()
          for color in colors {
              cells.append(confettiWithColor(color: color))
          }
  
          emitter.emitterCells = cells
          layer.addSublayer(emitter)
          active = true
      }
  
      public func stopConfetti() {
          emitter?.birthRate = 0
          active = false
      }
  
      func imageForType(type: ConfettiType) -&gt; UIImage? {
  
          var fileName: String!
  
          switch type {
              case .Confetti:
              fileName = "confetti"
              case .Triangle:
              fileName = "triangle"
              case .Star:
              fileName = "star"
              case .Diamond:
              fileName = "diamond"
              case let .Image(customImage):
              return customImage
          }
         /*
          let path = Bundle(for: SAConfettiView.self).path(forResource: "SAConfettiView", ofType: "bundle")
          let bundle = Bundle(path: path!)
          let imagePath = bundle?.path(forResource: fileName, ofType: "png")
          let url = NSURL(fileURLWithPath: imagePath!)
          let data = NSData(contentsOf: url as URL)
          if let data = data {
              return UIImage(data: data as Data)!
          }
          return nil */
          return UIImage(named: fileName)
      }
  
      func confettiWithColor(color: UIColor) -&gt; CAEmitterCell {
          let confetti = CAEmitterCell()
          confetti.birthRate = 6.0 * intensity
          confetti.lifetime = 14.0 * intensity
          confetti.lifetimeRange = 0
          confetti.color = color.cgColor
          confetti.velocity = CGFloat(350.0 * intensity)
          confetti.velocityRange = CGFloat(80.0 * intensity)
          confetti.emissionLongitude = CGFloat(M_PI)
          confetti.emissionRange = CGFloat(M_PI_4)
          confetti.spin = CGFloat(3.5 * intensity)
          confetti.spinRange = CGFloat(4.0 * intensity)
          confetti.scaleRange = CGFloat(intensity)
          confetti.scaleSpeed = CGFloat(-0.1 * intensity)
          confetti.contents = imageForType(type: type)!.cgImage
          return confetti
      }
  
      public func isActive() -&gt; Bool {
          return self.active
      }
  }
  </code></pre>