0

エラーや警告も表示されません。他に提供できる関連情報や詳細がわかりません。足りなかったら言ってください。

  • _mapView.delegate は自分自身に設定されています

calloutAccessoryControl が設定されているメソッド:

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
    
    NSLog(@"Enter viewForAnnotation delegate");
    
    static NSString *identifier = @"MyLocation";
    if ([annotation isKindOfClass:[MapViewAnnotation class]]) {
        
        MKPinAnnotationView *annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:identifier];
        if (annotationView == nil) {
            annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
        } else {
            annotationView.annotation = annotation;
        }
        
        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        
        UIImageView *callOutButtonImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow.png"]];
        annotationView.rightCalloutAccessoryView = callOutButtonImage;
        
        annotationView.image=[UIImage imageNamed:@"green-node.png"];
        
        return annotationView;
    }
    
    return nil;
}

calloutAccessoryControlTabbed:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control{
    NSLog(@"Control Tabbed!");
    _scrollView.hidden = false;
}
4

1 に答える 1

2

以下はmapView:annotationView:calloutAccessoryControlTapped:、MKMapViewDelegate プロトコル リファレンス ドキュメントの説明からのものです。

アクセサリ ビューにはカスタム コンテンツが含まれ、注釈タイトル テキストの両側に配置されます。指定したビューが UIControl クラスの子孫である場合、マップ ビューは、ユーザーがビューをタップするたびに便利なようにこのメソッドを呼び出します。このメソッドを使用して、タップに応答し、そのコントロールに関連付けられたアクションを実行できます。たとえば、コントロールが注釈に関する追加情報を表示する場合、このメソッドを使用してモーダル パネルにその情報を表示できます。

注釈ビューの右側のコールアウト アクセサリ ビューに UIImage を追加したことがわかります。UIImage オブジェクトは UIControl から継承しません。UIButton オブジェクトが機能します。

于 2012-11-14T15:11:30.723 に答える