2013-05-06 4 views
4

나는 정말로 간단한 질문을 가지고 있습니다 : 맵에서 MKAnnotation이 선택되었는지 어떻게 확인할 수 있습니까?지도에서 MKAnnotation을 선택했는지 확인하십시오.

(GET) 속성과 같이 선택 항목을 볼 수 없습니다.

선택/선택 취소 된 이벤트를 트리거하고 그 결과를 속성에 저장하고 필요할 경우 확인할 수 있기를 바랍니다. 좀 더 직설적이어야합니다.

대단히 감사합니다. MKMapView didSelectAnnotationView: 사용의 대리자 메서드의

답변

6

-[MKMapView selectedAnnotations]을 확인하십시오.

+0

그레이트, 그게 내가 무엇을 찾고 있었는지 – Tom

6

만들기 사용

-(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]; 
    } 
} 

그것은 당신을 도울 것입니다 희망 선정 이벤트 MKAnnotation를 얻을 수 있습니다.

+0

감사합니다,하지만 정말 놀랍습니다. annotation에 대한 간단한 isSelected 속성이 없습니다 ... – Tom

+1

단순한 Selected 속성이있을 수 있습니다. MKAnnotationView에 사용자 지정 단추를 추가하는 것입니다. 그렇지 않으면 도움을 받아야합니다. 이 대리자 메서드. –

1

이에 그냥 업데이트 - 아이폰 OS 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 
     } 
    } 
} 
관련 문제