マップビュー iOS6 でピンを選択すると謎の問題が発生します
ところで、iOS 5 では正しく動作しますが、iOS 6 のマップで何が変更されてこの問題が発生したのかはわかりません。
地図をクリックすると、吹き出しがピンの上に直接移動し、正しく表示されることに注意してください
ヘルプ/手がかりをいただければ幸いです。
前もって感謝します
答えは、カスタム吹き出しの実装方法によって少し異なる場合があります。これは私が使用しているソリューションです: MKAnnotationView コールアウトをカスタマイズすると、まったく同じ問題に遭遇しました。
基本的に、コールアウトが表示されるたびに、サブビューを前面に表示する必要がありました。
この場合、私のカスタム コールアウト バブルは 'BaseCalloutView' というクラスであり、UIView を ContentView プロパティとして含みます (上のリンクの UML ダイアグラムで確認できます)。注釈が選択されると、追加した BaseCalloutView の「animateIn」関数がトリガーされます。
[self.superview bringSubviewToFront:self];
前述したように、カスタム コールアウト バブルをどのように実装しているかによって、マイレージは異なる場合があります。必要に応じて完全なコードを提供できますが、正直なところ、私のコードの 90% は上記のリンクからのものです。
同じコードベースを使用していますが、同じ問題が発生しました。[self.superview BringSubviewToFront:self]; どこに置いても、うまくいきません。[animateIn] または [didMoveToSuperView] または [layoutIfNeeded]
この問題は指でマップを少し動かすことで解消されたので、(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view にコードを配置することで、この効果を簡単にシミュレートできることがわかりました。オフセットは非常に小さく、視覚的な動きはまったくわかりません。
CLLocationCoordinate2D newCenterCoordinate = {self.mapView.region.center.latitude + 0.0000001,
self.mapView.region.center.longitude + 0.0000001};
[self.mapView setCenterCoordinate:newCenterCoordinate animated:NO];
IOS 5 および IOS 6 では、これを試してみましたが、問題ありません
ピンが CalloutView と重なることはありません。私はカスタム calloutview を使用し、ファイル Base calloutView にこれを追加します:
- (void)didMoveToSuperview {
[super didMoveToSuperview];
[self.superview bringSubviewToFront:self];
}