title: How to specify selector when CAKeyframeAnimation is finished?
body: <p>I'm using a CAKeyframeAnimation to animate a view along a CGPath. When the animation is done, I'd like to be able to call some other method to perform another action. Is there a good way to do this?</p>
  
  <p>I've looked at using UIView's setAnimationDidStopSelector:, however from the docs this looks like it only applies when used within a UIView animation block (beginAnimations and commitAnimations). I also gave it a try just in case, but it doesn't seem to work.</p>
  
  <p>Here's some sample code (this is within a custom UIView sub-class method):</p>
  
  <pre><code>// These have no effect since they're not in a UIView Animation Block
  [UIView setAnimationDelegate:self];
  [UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];    
  
  // Set up path movement
  CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"path"];
  pathAnimation.calculationMode = kCAAnimationPaced;
  pathAnimation.fillMode = kCAFillModeForwards;
  pathAnimation.removedOnCompletion = NO;
  pathAnimation.duration = 1.0f;
  
  CGMutablePathRef path = CGPathCreateMutable();
  CGPathMoveToPoint(path, NULL, self.center.x, self.center.y);
  
  // add all points to the path
  for (NSValue* value in myPoints) {
      CGPoint nextPoint = [value CGPointValue];
      CGPathAddLineToPoint(path, NULL, nextPoint.x, nextPoint.y);
  }
  
  pathAnimation.path = path;
  CGPathRelease(path);
  
  [self.layer addAnimation:pathAnimation forKey:@"pathAnimation"];
  </code></pre>
  
  <p>A workaround I was considering that should work, but doesn't seem like the best way, is to use NSObject's performSelector:withObject:afterDelay:. As long as I set the delay equal to the duration of the animation, then it should be fine.</p>
  
  <p>Is there a better way? Thanks!</p>