W mojej aplikacji iPhone, używam MapKit z MKMapView i niestandardowych MKAnnotationView.
Problem jest, gdy adnotacje nakładają się na mapie (w moim app, adnotacje są zdjęcia i te zdjęcia mogą się pokrywać) i po dotknięciu na adnotacją, że pojawi się na przód, to już inna adnotacja (z tyłu), która odbiera zdarzenie (wydaje się być przypadkowe ).
Nie mogę znaleźć żadnego sposobu, aby wysłać zdarzenie do przedniej adnotacji. Nie mogę uwierzyć, że to bug / problem nie ma żadnego rozwiązania!
Z zamawiania i Zakon nakładających się adnotacji pytania na StackOverflow mi nie pomaga, że wiele.
Proszę każdy pomysł jest mile widziany (nawet brudne rozwiązania)!
Oto niektóre z moich kodu (nic nadzwyczajnego, bardzo często):
CustomAnnotation.h
@interface CustomAnnotation : NSObject <MKAnnotation> {
@private
CustomAnnotationView* view;
}
@property (nonatomic, retain) CustomAnnotationView* view;
@end
CustomAnnotation.m
@implementation CustomAnnotation
@synthetize view;
CustomAnnotationView.h
@interface CustomAnnotationView : MKAnnotationView {
}
@end
CustomAnnotationView.m
@implementation CustomAnnotationView
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
// Do something related to the annotation tapped
}
@end
Główna klasa ... // Adnotacje są dodawane, a niektóre z nich pokrywa się z innymi.
- (void)addAnnotation:(CustomAnnotation*)annotation {
[map addAnnotation:annotation];
}
...
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
NSString* identifier = getIdentifierFromAnnotation(annotation);
CustomAnnotationView* view;
if(!(view = (CustomAnnotationView*)[map dequeueReusableAnnotationViewWithIdentifier:identifier])) {
view = [[CustomAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier: identifier];
[(CustomAnnotation*)annotation setView:view];
[view release];
}
return view;
}













