ピンが非常に高密度になっているため、ピンが選択されたときにコールアウトがポップアップしますが、他のすべてのマップピンによってほとんど隠されます。正面には、選択されたマップピンの代理人(タップ付きコールアウト、選択されたピンではありません)がありました。MKAnnotation - マップピンのコールアウトが他のマップピンの後ろにポップアップ
回避策はありますか?
ピンが非常に高密度になっているため、ピンが選択されたときにコールアウトがポップアップしますが、他のすべてのマップピンによってほとんど隠されます。正面には、選択されたマップピンの代理人(タップ付きコールアウト、選択されたピンではありません)がありました。MKAnnotation - マップピンのコールアウトが他のマップピンの後ろにポップアップ
回避策はありますか?
UICalloutビューは、MKAnnotationViewのサブビューです。だから、私はあなたが前面にマップpingを持って来ると思う、UICAlloutViewもそこになります。
カスタムアノテーションビューを使用している場合は、選択したプロパティのオブザーバを追加できます。このオブザーバは、ピンが選択されたときのデリゲートのように動作します。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
MKAnnotation *annview = ...code to either dequeue or create new object...
[annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"];
return annview;
}
、あなたは
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context;
で選択状態を監視することができMugunthクマーによってリンク答えはまた、それはあなたがあなたの質問にあるような機能デリゲートの言及をしただけのことだあなたの希望する結果が得られます。
編集:ここでは
がobserveValueForKeyPathの内容の一例です:ofObject:change:context:が方法
NSString *action = (NSString*)context;
if([action isEqualToString:@"selectedmapannotation"]){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
MKAnnotationView *ann = (MKAnnotationView *)object;
if (annotationAppeared) {
// do something with the annotation when it is selected
}
else {
// do something with the annotation when it is de-selected
}
}
どのようにプログラムでフロントにUICalloutViewを持っていますか? – si28719e