Since you are adding your image as a subview of the annotationView and not using the image setter, I believe the frame of your annotationView is CGRectZero
. (You can easily check that by activating clipToBounds to true)
Therefore there is no hitZone for your pin to receive the event and show the callout.
You may want to set the bounds of your annotationView to the total size of both your images (pin + shadow).
annotationView.bounds = CGRectMake(0, 0, pin.frame.size.width, pin.frame.size.width);
//+Shadow ? if not : annotationView.bounds = pin.bounds;
On an unrelated note, I believe you may experience an issue when reusing annotations, as you are not resetting the annotation to the annotationView. You may want to change it to :
if(annotationView ==nil) { }
annotationView.annotation = annotation;
return annotationView;