Question

I would like to know how I can make sure that a callout bubble can't get deselected on a MKMapView.

Whenever I press on the map (background), this view:
With bubble

Turns to:
Without bubble

Which I do not want to allow. Yet I do want to keep the callOutButton support.

Was it helpful?

Solution

You could just programmatically select your annotation whenever annotations get deselected (using the corresponding delegate method). If you don't animate this selection then it looks as if the annotation never got deselected in the first place.

Example:

// MKMapView Delegate 
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view {
    // Replace "myAnnotation" with whichever annotation you need to remain selected
    [mapView selectAnnotation:self.myAnnotation animated:NO];
}

I tried this in a test project and it works fine (it doesn't flicker or anything). It's not exactly disabling deselection but the resulting effect is the same, so it might be a good workaround.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top