When I choose from a tableView, it goes back to my map and display the custom annotation callout over the pin selected. If I tap on another pin on the map, the custom callout view disappears from from the previous pin and is displayed over the current one selected.
If i try to tap inside the custom calloutView it also disappears. How can I avoid this, and why does this happen?
Here is the code:
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
if (![view.annotation isKindOfClass:[MKUserLocation class]]) {
self.calloutView = [[TNCalloutView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 150.0f, 100.0f)];
self.calloutView.alpha = 1.0f;
self.calloutView.backgroundColor = [UIColor whiteColor];
self.calloutView.layer.cornerRadius = 10.0f;
CGRect calloutViewFrame = self.calloutView.frame;
calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 20 , -calloutViewFrame.size.height -10);
self.calloutView.frame = calloutViewFrame;
[view addSubview:self.calloutView];
}
}
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
{
if ([view.annotation isKindOfClass:[TNAnnotations class]]) {
for (UIView *subviews in view.subviews) {
[subviews removeFromSuperview];
}
}
}
If I remove the deselect method all together. Nothing ever goes away, and that's not what I want.
Also, I have checked out other posts about this very topic, but it didn't help me.
Cheers.