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:

Turns to:

Which I do not want to allow. Yet I do want to keep the callOutButton support.
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:
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.