Отключить MKPlacemark, показывающий / скрывающий заголовок в iPhone

У меня есть MKMapView с MKPlacemark на нем. При отображении карты я показываю название метки места. Все хорошо до сих пор.

Я хочу отключить скрытие заголовка, когда пользователь касается его.

Я пытался добавить

myMapView.userInteractionEnabled = NO;
myMapView.multipleTouchEnabled = NO;

Что помогает, но полностью отключает взаимодействие с картой. Я хочу оставить возможность увеличивать / уменьшать и перемещать карту.

3 ответа

Решение

Следующий код добился цели

for (UIGestureRecognizer *g in [myMapView gestureRecognizers]) 
        [myMapView removeGestureRecognizer:g];

В методе MapKit Delegate попробуйте приведенный ниже код

- (MKAnnotationView *)mapView:(MKMapView *)mV viewForAnnotation:(id <MKAnnotation>)annotation {

    static NSString *defaultPinID = @"com.invasivecode.pin";
    MKPinAnnotationView *pinView  = (MKPinAnnotationView *)[yourMapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
    pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];
    if (annotation == yourMapview.userLocation)
        return nil;

    pinView.pinColor = MKPinAnnotationColorRed;

    pinView.userInteractionEnabled = NO;

    //pinView.canShowCallout = YES;
    pinView.animatesDrop = YES;

    return pinView;
}

вот если вы используете свою метку с этой логикой, возможно, ее работа.... надеюсь, это поможет вам...:)

Вместо создания PIN-кода создайте свою собственную аннотацию. В пользовательской аннотации создайте представление со всей информацией, которую вы хотите представить пользователю, и отключите метку места. Таким образом, вы не должны обрабатывать касания, но вы будете показывать всю статическую / динамическую информацию, привязанную к одной широте / долготе.

Другие вопросы по тегам