У меня есть пользовательский пин-код аннотации в приложении:
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
return [kml viewForAnnotation:annotation type:state];
}
, где я возвращаю пользовательский вид и создаю setImage для аннотации Viewmark, такой как:
- (MKAnnotationView *)viewForAnnotation:(id <MKAnnotation>)point type:(int)state
{
// Find the KMLPlacemark object that owns this point and get
// the view from it.
for (KMLPlacemark *placemark in _placemarks) {
if ([placemark point] == point)
{
UIButton *disclosureButton = [UIButton buttonWithType: UIButtonTypeDetailDisclosure];
[[placemark annotationView] setCanShowCallout: YES];
[[placemark annotationView] setRightCalloutAccessoryView:disclosureButton];
if (state == 0)
{
[[placemark annotationView] setImage:[UIImage imageNamed:@"ic_pin_tour.png"]];
}
else
{
[[placemark annotationView] setImage:[UIImage imageNamed:@"ic_pin_point.png"]];
}
return [placemark annotationView];
}
}
return nil;
}
но если я долго нажму на свой штырь для аннотации, он изменит свой вид по умолчанию (RedPin).
Я не могу понять, какой метод вызывается при длительном нажатии. Я пытался играть с UITapGestureRecognizer, но не узнал. Если я просто коснусь булавки аннотации, все будет хорошо, и мой пользовательский вид булавки аннотации не исчезнет.
Вы можете видеть, что я имею в виду на этом скриншоте:
Итак, почему внешний вид аннотационного штифта изменяется при длинном нажатии?