2014-10-29 7 views
6

내장 된지도보기를 사용하는 IOS 앱을 만들고 있습니다. 임 사용자 지정 주석 등을 성공적으로 배치하고 있습니다. 그러나 주석을 누르면 (mapView : didSelectAnnotationView) 호출되는 대리자 함수에 문제가 있습니다.mapView : didSelectAnnotationView : 제대로 작동하지 않습니다.

어노테이션을 처음으로 누르면 함수가 제대로 호출됩니다. 그러나 동일한 주석을 다시 클릭하면 함수가 실행되지 않습니다. 이 시점에서 다른 주석을 클릭하면 함수가 실행되지만 THAT 주석을 다시 클릭하면 함수가 실행되지 않습니다. 기본적으로 동일한 주석을 두 번 연속 클릭 할 수는 없습니다. 위임 함수는 처음에만 호출됩니다. 누구든지이 문제가 발생 했습니까? 특히 어딘가에 버그를 찾아야합니까?

+0

동일한 문제가 있지만 한 가지 차이점이 있습니다. 사용자 정의 annotationview가 mapview의 경계에 올 때 문제가 발생합니다. –

답변

4

글쎄, 당신이 그것에 대해 생각할 때, 당신은 이미 그 주석보기를 선택했습니다. 핀이 이미 선택 되었다면 델리게이트가 핀을 선택했다고 말할 수는 없습니다.

위임 호출에서 주석을 선택 해제하는 것이 간단한 수정 일 수 있습니다. 이렇게하면 다시 전화를받을 수 있습니다.

[annotation setSelected:NO animated:NO]; 

전화해야하는 방법은 여기를 클릭하십시오. https://developer.apple.com/library/ios/documentation/mapkit/reference/MKAnnotationView_Class/index.html#//apple_ref/occ/instm/MKAnnotationView/setSelected:animated :

+0

나를 위해 작동하지 않았다 –

+0

당신을 위해 무엇이 작동하지 않았습니까? 아직도 Objective-C를 사용하고 있습니까? 이 답변은 매우 오래된 것이므로 개입 할 때 쓸모 없게 만들 수 있습니다. – Bergasms

5

친구가 아이디어를 제안했으나 정확하다고 판명되었습니다. didSelectAnnotationView가 실행되면 실제로 주석이 선택된 것으로 태그를 지정합니다. 그런 다음 다시 클릭하면 '이미 선택됨'이므로 대리자 기능이 실행되지 않습니다. 원하는 작업을 완료하면 다음 함수를 호출하여 주석을 수동으로 선택 해제해야합니다.

1
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView 
    { 
     indexPathTag=aView.tag; 
     [mapView deselectAnnotation:aView.annotation animated:YES]; 

    } 
- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)aView 
    { 
    } 

나는이 당신을 위해 작동 바랍니다 :) 내가 같은 문제에 직면 한이 코드는 나를 위해 일했다.