title: Can't click on UIButton (that appears programmatically) after animation gets done
body: <p>Just had a small question. I'm trying to make a UIButton appear programmatically, which I have to animate. But once the animation gets done, I can't click the button for some reason.</p>
  
  <p>I have a CALayer "animationLayer" as a sublayer of the UIView, and within that animationLayer, I have three CAShapeLayers "pathLayers" (which I use to animate three different path ways as you can see in the diagram below). And within those pathLayers, I'm adding three buttons as their respective sublayers so that I can have an animation where the buttons move along the path as the path draws itself. Everything was working good until I tried adding a button as a sublayer of the pathLayer. Now when I click on the button, it's supposed to go to a method that logs on the console window "Button has been pressed". I've tried setting the self.view.userInteractionenabled to YES but that still gives me nothing.</p>
  
  <p>Why I can't click it?</p>
  
  <p>Here's some relevant parts of the code:</p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
  
      self.animationLayer = [CALayer layer];
      self.animationLayer.frame = CGRectMake(20.0f, 64.0f, 
      CGRectGetWidth(self.view.layer.bounds) - 40.0f, CGRectGetHeight(self.view.layer.bounds) - 84.0f);
  
      [self.view.layer addSublayer:self.animationLayer];
  }
  
  - (id)createUIButtonwithXPosition:(CGFloat)x YPosition:(CGFloat)y Width:(CGFloat)width Height:(CGFloat)height
  {
      UIImage *lionImage = [UIImage imageNamed:@"noun_project_347_2.png"];
      UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
      [button addTarget:self
                 action:@selector(logger:)
       forControlEvents:UIControlEventTouchUpInside];
      button.frame = CGRectMake(x, y, width, height);
      button.userInteractionEnabled = YES;
  //    [button setBackgroundColor:[UIColor clearColor]];
      [button setBackgroundImage:lionImage forState:UIControlStateNormal];
      [self.view addSubview:button];
  
      return button;
  }
  
  
  - (void)setupDrawingLayer
  {
      if(self.pathLayer != nil){
          [self.pathLayer removeFromSuperlayer];
          [self.secondPathLayer removeFromSuperlayer];
          [self.thirdPathLayer removeFromSuperlayer];
  
          self.pathLayer = nil;
          self.secondPathLayer = nil;
          self.thirdPathLayer = nil;
  
          ...//Other code not relevant
  }
  
      CGRect pathRect = CGRectInset(self.animationLayer.bounds, 100.0f, 100.0f);
      CGPoint bottomCenter = CGPointMake(CGRectGetMidX(pathRect), (self.lionBtnVerticalAlignment.constant + self.lionBtnHeight.constant + 25.0f));
      CGPoint center = CGPointMake(CGRectGetMidX(pathRect), CGRectGetMidY(pathRect));
      CGPoint leftCenter = CGPointMake(CGRectGetMinX(pathRect), CGRectGetMidY(pathRect));
      CGPoint rightCenter = CGPointMake(CGRectGetMaxX(pathRect), CGRectGetMidY(pathRect));
  
  
      UIBezierPath *path = [UIBezierPath bezierPath];
  
      UIBezierPath *secondPath = [UIBezierPath bezierPath];
  
      UIBezierPath *thirdPath = [UIBezierPath bezierPath];
  
  
      [path moveToPoint:bottomCenter];
      [path addLineToPoint:center];
  
      [secondPath moveToPoint:bottomCenter];
      [secondPath addLineToPoint:leftCenter];
  
      [thirdPath moveToPoint:bottomCenter];
      [thirdPath addLineToPoint:rightCenter];
  
      CAShapeLayer *pathLayer = [CAShapeLayer layer];
      pathLayer.frame = self.animationLayer.bounds;
      pathLayer.bounds = pathRect;
      pathLayer.geometryFlipped = YES;
      pathLayer.path = path.CGPath;
      pathLayer.strokeColor = [UIColor blackColor].CGColor;
      pathLayer.fillColor = nil;
      pathLayer.lineWidth = 3.0f;
      pathLayer.lineDashPattern = [NSArray arrayWithObjects:
                                   [NSNumber numberWithInt:6],
                                   [NSNumber numberWithInt:2],
                                   nil];
      pathLayer.lineJoin = kCALineJoinBevel;
  
  
      CAShapeLayer *secondPathLayer = [CAShapeLayer layer];
      secondPathLayer.frame = self.animationLayer.bounds;
      secondPathLayer.bounds = pathRect;
      secondPathLayer.geometryFlipped = YES;
      secondPathLayer.path = secondPath.CGPath;
      secondPathLayer.strokeColor = [UIColor redColor].CGColor;
      secondPathLayer.fillColor = nil;
      secondPathLayer.lineWidth = 3.0f;
      secondPathLayer.lineDashPattern = [NSArray arrayWithObjects:
                                   [NSNumber numberWithInt:6],
                                   [NSNumber numberWithInt:2],
                                   nil];
      secondPathLayer.lineJoin = kCALineJoinBevel;
  
      CAShapeLayer *thirdPathLayer = [CAShapeLayer layer];
      thirdPathLayer.frame = self.animationLayer.bounds;
      thirdPathLayer.bounds = pathRect;
      thirdPathLayer.geometryFlipped = YES;
      thirdPathLayer.path = thirdPath.CGPath;
      thirdPathLayer.strokeColor = [UIColor greenColor].CGColor;
      thirdPathLayer.fillColor = nil;
      thirdPathLayer.lineWidth = 3.0f;
      thirdPathLayer.lineDashPattern = [NSArray arrayWithObjects:
                                         [NSNumber numberWithInt:6],
                                         [NSNumber numberWithInt:2],
                                         nil];
      thirdPathLayer.lineJoin = kCALineJoinBevel;
  
      [self.animationLayer addSublayer:pathLayer];
      [self.animationLayer addSublayer:secondPathLayer];
      [self.animationLayer addSublayer:thirdPathLayer];
  
      self.pathLayer = pathLayer;
      self.secondPathLayer = secondPathLayer;
      self.thirdPathLayer = thirdPathLayer;
  
  
      UIImage *lionImage = [UIImage imageNamed:@"noun_project_347_2.png"];
  
      btn1 = (UIButton *)[self createUIButtonwithXPosition:0.0f YPosition:0.0f Width:lionImage.size.width Height:lionImage.size.height];
      btn1.layer.anchorPoint = CGPointZero;
      btn1.layer.frame = CGRectMake(0.0f, 0.0f, lionImage.size.width, lionImage.size.height);
  
      [self.view bringSubviewToFront:btn1];
      self.view.userInteractionEnabled = YES;
  
      ....//Other code not relevant
  
  }
  
  
  - (void)startAnimation
  {
      [self.pathLayer removeAllAnimations];
      [self.secondPathLayer removeAllAnimations];
      [self.thirdPathLayer removeAllAnimations];
  
       ....//Other code not relevant
  
      CABasicAnimation *pathAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
      pathAnimation.duration = 3.0;
      pathAnimation.fromValue = [NSNumber numberWithFloat:0.0f];
      pathAnimation.toValue = [NSNumber numberWithFloat:1.0f];
  
      [self.pathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];
      [self.secondPathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];
      [self.thirdPathLayer addAnimation:pathAnimation forKey:@"strokeEnd"];
  
      CAKeyframeAnimation *lionAnimation = [CAKeyframeAnimation     animationWithKeyPath:@"position"];
      lionAnimation.duration=3.0;
      lionAnimation.path = self.pathLayer.path;
      lionAnimation.calculationMode = kCAAnimationPaced;
      lionAnimation.delegate = self;
  
      [btn1.layer addAnimation:lionAnimation forKey:@"position"];
  
      btn1.layer.position = CGPointMake(365.0, 460.0);
  }
  </code></pre>