Usando o AVSpeechSynthesizer para ler uma descrição da localização em um Mapa

Meu mapa tem 4 ou 5 pontos próximos um do outro e agora, usando o AVSpeechSynthesizer, eu o tenho para que ele diga o nome do local (que também é exibido em uma pequena bolha).

Quero que ele ainda mostre essa bolha, mas, quando clicado, quero que faça uma descrição do local que eu especificaria. Este é o meu código no momento:

MapViewAnnotation.h

@interface MapViewAnnotation : NSObject <MKAnnotation> {
    NSString *title;
    CLLocationCoordinate2D coordinate;
    NSString *desc;
}

@property (nonatomic, copy) NSString *title;
@property (nonatomic, readonly) CLLocationCoordinate2D coordinate;
@property (nonatomic, readonly) NSString *desc;

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d initWithDesc:(NSString *)dsc;

MapViewAnnotation.m

@implementation MapViewAnnotation

@synthesize title, coordinate, desc;

- (id)initWithTitle:(NSString *)ttl andCoordinate:(CLLocationCoordinate2D)c2d initWithDesc:(NSString *)dsc {
[super init];
title = ttl;
coordinate = c2d;
    desc = dsc;
    return self;

MapViewController.h

@interface MapViewController : UIViewController {
    MKMapView *mapView;

}

@property (nonatomic, retain) IBOutlet MKMapView *mapView;
@property (strong, nonatomic) AVSpeechSynthesizer *synthesizer;

MapViewController.m

- (void)viewDidLoad
{

    // Set some coordinates for our position : Cutty Sark
    CLLocationCoordinate2D location;
    location.latitude = (double) 51.482997;
    location.longitude = (double) -0.010072;

    // Royal Observatory
    CLLocationCoordinate2D twoLocation;
    twoLocation.latitude = (double) 51.477805;
    twoLocation.longitude = (double) -0.001430;

    //Royal Naval College
    CLLocationCoordinate2D threeLocation;
    threeLocation.latitude = (double) 51.483344;
    threeLocation.longitude = (double) -0.006799;

    //Queen's House
    CLLocationCoordinate2D fourLocation;
    fourLocation.latitude = (double) 51.481383;
    fourLocation.longitude = (double) -0.003722;

    //National Maritime Museum
    CLLocationCoordinate2D fiveLocation;
    fiveLocation.latitude = (double) 51.481050;
    fiveLocation.longitude = (double) -0.005578;


    // Add Cutty Sark annotation to MapView
    MapViewAnnotation *newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Cutty Sark" andCoordinate:location initWithDesc:@"Description about Cutty Sark"];
    [self.mapView addAnnotation:newAnnotation];
    self.mapView.delegate = self;
    [newAnnotation release];


    // Add Royal Observatory annotation to MapView
    newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Royal Observatory" andCoordinate:twoLocation initWithDesc:@"Description about Cutty Sark"];
    [self.mapView addAnnotation:newAnnotation];
    [newAnnotation release];

    // Add Royal Naval College annotation to MapView
    newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Royal Naval College" andCoordinate:threeLocation initWithDesc:@"Description about Cutty Sark"];
    [self.mapView addAnnotation:newAnnotation];
    [newAnnotation release];

    // Add Queen's House annotation to MapView
    newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"Queen's House" andCoordinate:fourLocation initWithDesc:@"Description about Cutty Sark"];
    [self.mapView addAnnotation:newAnnotation];
    [newAnnotation release];

    // Add National Maritime Museum annotation to MapView
    newAnnotation = [[MapViewAnnotation alloc] initWithTitle:@"National Maritime Museum" andCoordinate:fiveLocation initWithDesc:@"Description about Cutty Sark"];
    [self.mapView addAnnotation:newAnnotation];
    [newAnnotation release];


}

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)anView
{
    AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc]init];
    AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:((MapViewAnnotation *)anView).desc];
    [utterance setRate:0.5];
    [synthesizer speakUtterance:utterance];
}


// When a map annotation point is added, zoom to it (1500 range)
- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    id <MKAnnotation> mp = [annotationView annotation];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance([mp coordinate], 1500, 1500);
    [mv setRegion:region animated:YES];
    //[mv selectAnnotation:mp animated:YES];

}

Qualquer ajuda seria apreciada!

EDITAR Aqui está o NSLog:

questionAnswers(1)

yourAnswerToTheQuestion