2012-03-26 4 views
4

내 iPhone 앱에는 사용자가 선택할 수있는 다수의 위치가있는지도보기가 있습니다. 콜 아웃 뷰를 표시하려면 주석 중 하나를 누르고 다시 실제로 선택하려면 주석을 탭하고 싶습니다. 문제는 didSelectAnnotationView가 한 번만 호출된다는 것입니다.MapView 주석 선택하기 두번

그러면 이미 선택된 주석을 어떻게 찾을 수 있습니까? 또는 콜 아웃보기를 숨기지 않고 주석을 선택 취소 할 수 있습니까? 사용자는 다시 선택하기 전에 주석을 선택 취소하여이 작업을 반복 할 수 있지만 직관적이지는 않습니다. 따라서이 작업을 수행하지 않아도됩니다.

+0

당신은 당신이 자신의 코드에 해당 뷰의 두 번째 키를 누릅니다를 감지 할 수 MKAnnotationView의 서브 클래스를 사용하는 경우? (보다는 '핀') – Diziet

+0

나는 MFCnnotationView, 나는 내가 할 수있을 것 같아요 현재 하위 클래스입니다. 그러나 나는 이것에 간단한 해결책이없는 것 같아서 놀랍다. –

+0

나는 방금 주위에 바이올린을 썼다. 그리고 나는 당신이 지금 분명하게하고있는 것을 본다. 어노테이션을 클릭하면 사라지지만 관련 핀을 다시 선택하지 않고 두 번째 클릭 할 기회는 없습니다. – Diziet

답변

0

주석을 선택한 상태에서 선택한 상태로 다시 이동할 수 없습니다.

대신 사용자 지정 mkannotationview를 사용하여 setSelected를 재정의하고보기에 UITapGestureRdcognizer를 설치 한 다음보기를 선택 취소 할 때 제거 할 수 있습니다.

탭을 눌렀을 때 선택한 상태로 원하는 것을 수행하십시오.

7

난 그냥 아래의 코드를 사용하여 솔루션을 발견

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

} 

선택한 주석이 해제됩니다이 방법을 당신은 다시 한 번 선택할 수 있습니다. '16이 문제가있는 사람들을 위해

3

, 여기에 스위프트 버전 :

mapView.deselectAnnotation(view.annotation!, animated: false)