Отключить 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-кода создайте свою собственную аннотацию. В пользовательской аннотации создайте представление со всей информацией, которую вы хотите представить пользователю, и отключите метку места. Таким образом, вы не должны обрабатывать касания, но вы будете показывать всю статическую / динамическую информацию, привязанную к одной широте / долготе.