2014-05-20 5 views
10

내 iPad 응용 프로그램에서는 iOS 맵을 사용하여 주석을 사용하여 거의 표시하지 않습니다. 주석을 선택하면 사용자 정의 설명 선을 표시하려고합니다. 나는 UIPopoverController를 사용하여 콜 아웃을 보여줍니다. 그러나이 기능은 애노테이션을 처음 탭할 때만 작동합니다. 내가 동일한 주석에 대한 콜 아웃을보고 싶다면 다른 주석을 먼저 선택하고 이전 주석을 탭해야합니다.MKMapView 주석은 두 번째로 선택 가능하지 않습니다.

기본적으로이 대리자 메서드는 두 번째 발생하지 않습니다.

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

나는 스토리 보드를 사용 중이고 대리인이 설정되어 있습니다. 이것이 어노테이션을 설정하는 방법입니다.

[self.mapView addAnnotations:self.placemarksArray] 

위의 문제에 대한 이유를 알려 주실 수있는 사람이 있습니까? 감사

+0

당신이 didSelectAnnotationView 방법의 상단에 deselectAnnotation를 호출하려고 했습니까? – Anna

+0

와우 나는하지 않았다. 나는 시험을했고 그 일을했다. 이 질문을 답으로 추가해주십시오. 그러면 대답을 수락 할 수 있습니다. 도와 주셔서 감사합니다. – Chinthaka

답변

24

didSelectAnnotationView 위임 방법에 대한 설명서는 토론 섹션에서 말한다 : 당신은 이 주석 뷰의 선택 상태에서 변경 추적하기 위해이 방법을 사용할 수 있습니다

.

대리자 방법 "선택되지 않은"의 주석 뷰의 상태 변경 "을 선택"단지 발광 수단

(I 단어 "변경".에 굵은 이탤릭체 첨가).


당신이 드 강제 할 수 있습니다 ("선택하지"를 선택한 주석의 상태를 변경) 다른 주석 또는지도에 활용할 다시 같은 주석의 "선택"는 감지하지 않도록하려면 -를 선택 didSelectAnnotationView 방법의 상단 :

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [mapView deselectAnnotation:view.annotation animated:YES]; 

    //existing code to handle tap on annotation... 
} 
1

스위프트 3 버전 :

mapView.deselectAnnotation(view.annotation, animated: true)