3

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.

Nilzone-
  • 2,766
  • 6
  • 35
  • 71

0 Answers0