0

annotation view(および注釈ビューのみ)がクリックされたときにメソッドを呼び出そうとします。

- (void)mapView:(MKMapView *)m didSelectAnnotationView:(MKAnnotationView *)view {

            [self openDetailView];            

}

しかし、私が気づいたのは、このメソッド ( ) は、が表示される前に をopenDetailView選択したときにのみ呼び出されるということです。コールアウトのクリックでそのメソッドを起動するにはどうすればよいですか? 事前にサンクス。PINannotation view

4

1 に答える 1

1

コールアウトの代わりに矢印付きのボタンを追加することにより:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    if ([annotation isMemberOfClass:[MKUserLocation class]]) {
        return nil;
    }
    MKPinAnnotationView *v =[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"ku"] autorelease];
    UIButton *button = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    button.frame = CGRectMake(0, 0, 24, 24);
    Shop *shop = [(ShopAnnotation *)annotation myShop];
    button.tag = [shop.ID intValue];
    [button addTarget:self action:@selector(callOutPressed:) forControlEvents:UIControlEventTouchUpInside];
    [button setImage:[UIImage imageNamed:@"map_arr_right.png"] forState:UIControlStateNormal];

    v.rightCalloutAccessoryView = button;
    v.canShowCallout = YES;
    return v;
}

- (void) callOutPressed:(id)sender {

    NSLog(@"callout pressed");
}
于 2012-10-16T22:24:05.943 に答える