7

mkmapview でカスタム コールアウトを実装したいので、これらのクラス CalloutMapAnnotationView.h および CalloutMapAnnotationView.m を使用しています。

これらのクラスを次のリンクから抽出しました

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.h

https://github.com/asalom/Custom-Map-Annotation-Callouts/blob/master/Classes/CalloutMapAnnotationView.m

これらはios5では正常に動作しますが、ios6ではコールアウトをクリックするとマップビューが移動し、ズーム中に下の図に示すようにコールアウトが正しく表示されません。取得する方法もいくつか試しましたos のバージョンをチェックしてこの問題を解決し、クラス内のいくつかのメソッドを変更しようとしましたが、使用しませんでした。

これらをios5マップビューに実装した後、次のようになります ここに画像の説明を入力

Ios6 では、これは ios5 のように正しく機能しません。例えば ここに画像の説明を入力

4

2 に答える 2

5

私もiOS 6これらのクラスを使用する際に同じ問題に直面しました。これらの変更は私にとってはうまくいきました:

1) このメソッドの変更:

マップ ビュー クラスに実装するこのメソッド

(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView*)view

次の行の順序で

self.selectedAnnotationView = view;

[self.mapView addAnnotation:self.calloutAnnotation];

2) CalloutMapAnnotationView.m ファイル内

- (void)adjustMapRegionIfNeeded in this method first 5 lines like bellow

    CGFloat xPixelShift = 0;

   if ([self relativeParentXPosition] < 38) {

        xPixelShift = 38 - [self relativeParentXPosition];

   } else if ([self relativeParentXPosition] > self.frame.size.width - 38) {

  xPixelShift = (self.frame.size.width - 38) - [self relativeParentXPosition];

   }

3) 同じクラス CalloutMapAnnotationView.m (void)drawRect:(CGRect)rectで - このメソッドの後にCGFloat parentX = [self relativeParentXPosition];

行とrect = self.bounds;この行の上に次の行を追加します

    if ([self relativeParentXPosition] < 38) {

       parentX = 38;

   } else if ([self relativeParentXPosition] > self.mapView.frame.size.width - 38) {

       parentX = [self relativeParentXPosition]-25;

   }

4) 同じクラス CalloutMapAnnotationView.m 内。

- (void)didMoveToSuperview {
        [super didMoveToSuperview];
        [self.superview bringSubviewToFront:self];
    }

上記のクラスを直接使用して、iOS 5 と iOS 6 の両方で問題なく使用できます。要件に応じて必要な変更を行う必要があります。

于 2012-12-05T05:01:48.497 に答える
-2

そのようにnsstringタイトルとnstringサブタイトルを追加するだけで、_nameはあなたが望むタイトルです。

- (NSString *)title {
    return _name;
}
- (NSString *)subtitle {
    return [NSString stringWithFormat:@"%f, %f", _coordinate.latitude, _coordinate.longitude];
}
于 2013-02-15T08:04:26.423 に答える