ios mapkit закрывающие аннотации, нажав на карту

У меня есть приложение mapkit, которое размещает аннотации на карте, когда вы их нажимаете, оно показывает выноску с атрибутом title.

Это работает нормально, но пользователь не может закрыть их. Они остаются открытыми, пока не коснутся другой аннотации. Разве я не могу сделать так, чтобы пользователь мог коснуться другого места на карте (или снова нажать аннотацию), чтобы закрыть ее?

У меня было ощущение, что это настройка по умолчанию, так что, возможно, я что-то забиваю? У меня есть распознаватель жестов, который я использую для обнаружения некоторых касаний карты

    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]
                                            initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;

[self.mapView addGestureRecognizer: tap];

, которые вызывают это:

- (void)handleTap:(UITapGestureRecognizer *)sender {     
if (sender.state == UIGestureRecognizerStateEnded)  {   


    CGPoint tapPoint = [sender locationInView:sender.view.superview];
    CLLocationCoordinate2D coordinate = [self.mapView convertPoint: tapPoint toCoordinateFromView: self.mapView];

    if (pitStopMode && !pitStopMade){
            pitStopMade = YES;
        InfoAnnotation *annotation = [[InfoAnnotation alloc]
                       initNewPitstopWithCoordinate:coordinate];
        NSLog(@" Created Pit Stop");

        annotation.draggable = NO;
        //place it on the map
        [self.mapView addAnnotation: annotation];

        self.instructionLabel.text = @"Tap button again to remove";
        annotation.creatorId = self.localUser.deviceId;
        //send it to the server
        [annotation updateLocationWithServerForConvoy: self.convoyCode];        

        [annotation release];

    }  

    if (hazardMode && !hazardMade){
            hazardMade = YES;
        InfoAnnotation *annotation  = [[InfoAnnotation alloc]
                       initNewHazardWithCoordinate:coordinate];         
        NSLog(@" Created Hazard");

        annotation.draggable = NO;
        //place it on the map
        [self.mapView addAnnotation: annotation];

        self.instructionLabel.text = @"Tap button again to remove";
        annotation.creatorId = self.localUser.deviceId;
        //send it to the server
        [annotation updateLocationWithServerForConvoy: self.convoyCode];        

        [annotation release];


    }
}

}

Есть ли что-нибудь, что я должен сделать, чтобы эти касания также передавались в просмотр карты? Перетаскивание аннотаций работает нормально, поэтому я не уверен, что это вызывает?

Есть ли вариант, который мне не хватает, или мне нужно попробовать реализовать его вручную?

6
задан RodH257 23 June 2011 в 05:20
поделиться