非常に簡単な質問があります: MKAnnotation がマップ上で選択されているかどうかを確認するにはどうすればよいですか?
選択した like (GET) プロパティが表示されません。
選択/選択解除されたイベントをトリガーし、その結果をプロパティに保存して、必要に応じてチェックすることで解決しないことを願っています。もっと簡単なものがあるはずです。
どうもありがとう!
非常に簡単な質問があります: MKAnnotation がマップ上で選択されているかどうかを確認するにはどうすればよいですか?
選択した like (GET) プロパティが表示されません。
選択/選択解除されたイベントをトリガーし、その結果をプロパティに保存して、必要に応じてチェックすることで解決しないことを願っています。もっと簡単なものがあるはずです。
どうもありがとう!
MKMapView のデリゲート メソッドをdidSelectAnnotationView:
使用すると、イベント MKAnnotation Selected を取得できます。
-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
// Annotation is your custom class that holds information about the annotation
if ([view.annotation isKindOfClass:[Annotation class]]) {
Annotation *annot = view.annotation;
NSInteger index = [self.arrayOfAnnotations indexOfObject:annot];
}
}
それがあなたを助けることを願っています。
これに対する単なる更新 -- iOS 4 には、MKMapViewDelegate
注釈の選択と選択解除を追跡するために使用できるメソッドがあります。
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view
選択した注釈イベントにオブザーバーを使用できます。
[pin addObserver:self
forKeyPath:@"selected"
options:NSKeyValueObservingOptionNew
context:@"ANSELECTED"];
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
NSString *action = (NSString*)context;
if([action isEqualToString:@"ANSELECTED"]){
BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue];
if (annotationAppeared) {
// clicked on an Annotation
}
else {
// Annotation disselected
}
}
}