1

MKMapViewに注釈を追加しようとしていますが、注釈をクリック可能に設定したいと考えています ( didAddAnnotationViewsで行ったクリック可能な機能。)

実際、この機能は IOS 6 では正常に機能していますが、IOS 7 では機能していません。didAddAnnotationViewsメソッドに単純な NSLog 印刷ステートメントを追加したところ、 didAddAnnotationViewsがaddAnnotationに適切 に応答しないことがわかりました。addAnnotation に応答して、 didAddAnnotationViews が毎回呼び出されると思いました。複数の注釈を追加すると、ログ ステートメントは 1 つだけ出力されます。つまり、didAddAnnotationViewsは 1 回しか実行されないと思います。

私はMapKit、MKMapViewを使用していますが、この問題はIOS 7でのみ発生します.didAddAnnotationViewsが正しく機能しない理由を修正または見つける方法を教えてください

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views
{    
    MKAnnotationView *annotationView = [views objectAtIndex:0];
    MapViewAnnotation *annotation=annotationView.annotation;
    NSLog(@"<==========didAddAnnotationViews=============> %@",annotation.title);

    annotationView.canShowCallout=YES;
    if(annotation.subtitle==nil){
        annotationView.rightCalloutAccessoryView = nil;
    }else{
        annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(annotation.coordinate, 11000, 11000);
        [mv setRegion:region animated:YES];
   }
}
4

1 に答える 1

0

メソッド シグネチャは、複数の注釈ビューが同時に与えられることを意味します。

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views;

ビューの配列を次のようにログに記録してみてください。

NSLog(@"%@", views);

運が良ければ、すべての注釈が表示されます。インデックス 0 の最初のオブジェクトだけを見るのではなく、それらを反復処理します。

于 2014-01-17T00:18:51.873 に答える