2

この問題の原因を調べてみましたが、何が問題なのかわかりません。ここで私を助けてくれることを願っています。

mapView に注釈を表示しようとしています。ピンはドロップされていますが、最初にユーザーの場所の注釈 (青い点) をタップしてから戻って注釈をタップするまで、吹き出しを表示することはできません。その後、注釈が表示され、すべて正常に動作します。もう 1 つの方法は、ピンの周りをランダムにタップすることです。マップ上に別のピンをドロップすると、同じ手順を実行する必要があります。

これは、iOS6、シミュレータ、およびデバイスでのみ発生します。iOS5 は問題なく動作します。

これは、viewForAnnotation に使用しているコードです

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {

    MKAnnotationView *annotationView = nil;

    //Check if this annotation is not the blue dot for user location
    if(annotation != mapView.userLocation) {

        //Try to rehuse a previous annotation
        annotationView = (MKAnnotationView *) [mapView dequeueReusableAnnotationViewWithIdentifier:@"searchResult"];

        //If we don't have any, create it
        if (annotationView == nil) {
            annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"searchResult"];
        }
        else {//Or re use it
            annotationView.annotation = annotation;
        }


        [annotationView setImage: [UIImage imageNamed:@"customMarker.png"]];
        annotationView.enabled = YES;
        annotationView.canShowCallout = YES;
        annotationView.centerOffset = CGPointMake(0,-16);
        annotationView.rightCalloutAccessoryView = nil;//Avoid again the detail button because is a geographic reference


    }
    else {//Show a text when the blue dot for user location is pressed
        [mapView.userLocation setTitle:NSLocalizedString(@"you_are_here", nil)];
    }

    return annotationView;

}
4

1 に答える 1

0

問題を見つけました。

カスタムMKAnnotationを作成する方法は次のとおりです。

このカスタムクラスの使用:http://gist.github.com/3866874 次に、このコード:

MapAnnotation *location = [[MapAnnotation alloc] init];
location.title = @"some title";
location.subtitle =@"some subtitle";
location.coordinate = mapRegion.center;
location.placeData = resultSet;
[map setDelegate:self];
[map addAnnotation:location];
[map selectAnnotation:location animated:YES]; //THIS LINE WAS CAUSING THE PROBLEM IN IOS6

行を削除しました

[map selectAnnotation:location animated:YES];

これで、コールアウトが正しく表示されます。

于 2012-10-10T17:33:44.433 に答える