2012-03-22 3 views
1

지도보기에서 하나의 특수 효과가 있습니다. 프로그래밍 방식으로 선택할 수는 있지만 아무 것도 탭하지 않습니다. 당신이 나를 도울 수? 비슷한 문제가 발생한 사람이 있습니까? [방법주석을 선택할 수 없습니까?

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)aView 
{ 
    NSLog(@"did select annotation"); 
} 

을 덧붙여서 :

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation 
{ 
    MKAnnotationView *aView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"MapVC"]; 
    if (!aView) { 
     aView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"MapVC"]; 
     aView.canShowCallout = YES; 
     aView.draggable=YES; 
     aView.leftCalloutAccessoryView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; 
     // could put a rightCalloutAccessoryView here 
    } 
    aView.annotation = annotation; 
    [(UIImageView *)aView.leftCalloutAccessoryView setImage:nil]; 
    return aView; 
} 

볼지도에 추가 :

- (void)updateMapView 
{ 
    if (self.mapView.annotations) [self.mapView removeAnnotations:self.mapView.annotations]; 
    if (self.annotation) [self.mapView addAnnotation:self.annotation]; 
} 

및 주석 누름에 반응 mehod 여기 anotations를 설정하는 mehod되고 self.mapView selectAnnotation : annotation]는 작동하지만 콜 아웃을 사용하지 않습니다 (중단 점으로 체크 표시). 어노테이션을 테이핑하는 것은 (중단 점을 통해 다시 씹는다).

+2

보기의 일부 이미지를 포함하거나 설정하는 방법을 보여주는 코드를 제공 할 수 있습니다. 적어도 좀 더 자세히 설명하지 않고 진행되는 작업을 파악하는 것은 매우 어렵습니다. – dasblinkenlight

+1

지도보기의 대리자가 설정되어 있고 주석의'title' 속성이 nil 또는 비어 있지 않은지 확인하십시오. – Anna

+0

제목은 분명히 nil이 아니며 비어 있는지 확인할 수 없습니다. Btw 언급하기 만하면 - 드래그도 작동하지 않는 것 같아요 그리고 나는 속성으로 제목이 없다는 것을 잊어 버렸습니다, 그것은 단지 내 호출의 한 방법입니다. 희망이 유용하게 사용할 수 있습니다. –

답변

7

주석의 title이 nil이거나 비어있는 경우 설명 문구가 표시되지 않습니다 (다른 모든 항목이 올바르게 설정된 경우에도 canShowCallout 포함).

주석을 탭하면 didSelectAnnotationView 대리자 메서드가 호출되고 주석에 비어 있지 않은 title이 있으면 설명 선이 표시됩니다.

... 그것은 바로 내가, 내 주석 클래스는 데이터 클래스의 인스턴스를 포함하여 내 모든 데이터를 포장 할 수있는 별도의 클래스가 있습니다 :


코멘트에있는 당신의 질문에 대해서는?

아무 문제가 없습니다.
지도 관련 로직을 기본 클래스와 별도로 유지하려는 경우 기본 데이터 클래스를 특수 효과 이외의 용도로 사용할 수있는 복잡한 앱을 사용하는 것이 좋습니다.

앱이 매우 간단하고 데이터가 특수 효과에만 사용되는 경우 매우 단순하게 유지하고 두 가지를 결합 할 수 있지만 필수 사항은 아닙니다.

예를 들어, 배열 색인이나보기/단추 태그를 사용하여 주석에서 일부 데이터 객체로 다시 연결하려고하는 대신 직접 참조를 사용하는 한 "올바른"클래스 구현은 무엇이 작동하는지에 달려 있습니다 귀하의 애플 리케이션을위한.

3

그렇지 않은 경우를 대비하여 MKAnnotationView의 canShowCallout 속성을 YES로 설정해보십시오.

+0

고맙습니다. 나는 모든 종류의 물건을 시험해보고 있었지만 나는이 물건에 대해 몰랐다. 그것은 나를 위해 트릭을했습니다. –

+1

와우, 무슨 잡을! –

관련 문제