iosmkmapviewmkannotationmkannotationview

Detect Tap on CalloutBubble in MKAnnotationView


Im working with MKMapView and MKAnnotationView.

I have an annotation in the map. When the users tap on it, the callOut Bubble is displayed. When the annotation is tapped again ( and the callOut Bubble is visible ) i need to change to another view.

How can i detect the second tap, or the tap in the bubble?


Solution

  • Could you add a gesture recognizer when you're initializing the MKAnnotationView?

    Here's the code for inside dequeueReusableAnnotationViewWithIdentifier:

    UITapGestureRecognizer *tapGesture = 
            [[UITapGestureRecognizer alloc] initWithTarget:self 
                                            action:@selector(calloutTapped:)];
    [theAnnotationView addGestureRecognizer:tapGesture];
    [tapGesture release];
    

    The method for the gesture recognizer:

    -(void) calloutTapped:(id) sender { 
        // code to  display whatever is required next.
    
        // To get the annotation associated with the callout that caused this event:
        // id<MKAnnotation> annotation = ((MKAnnotationView*)sender.view).annotation;
    }