V mém iPhone aplikaci, já používám MapKit s MKMapView a vlastní MKAnnotationView.
Problém je, když anotace překrývat na mapě (v mé aplikaci, anotace jsou fotky a ty fotky se mohou překrývat) a po klepnutí na poznámku, která se zobrazí na přední straně, je to další anotaci (na zadní straně), který přijímá události (zdá být náhodné ).
Nenašel jsem žádný způsob, jak posílat události na přední anotaci. Nemůžu uvěřit, že tato chyba / problém nemá řešení!
Z uspořádání a pořadí překrývání anotace otázky týkající StackOverflow mě nepomůže, že hodně.
Prosím, nějaký nápad je vítán (i špinavé řešení)!
Zde je několik z mých kód (nic vymyšleného, velmi časté):
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
Hlavní třída ... // se přidávají poznámky a některé z nich se překrývá s ostatními.
- (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;
}













