2009-09-22 22 views
7

Ghim bản đồ của tôi có thể khá đông dân để khi ghim được chọn, chú thích bật lên nhưng hầu như bị che khuất bởi tất cả các chân bản đồ khác - Tôi có thể mang Pin bản đồ phía trước nó có một đại biểu cho pin bản đồ đã chọn (không khai thác chú thích, pin được chọn).MKAnnotation - Bản đồ Pin callout bật lên phía sau các chân bản đồ khác

Mọi đề xuất cho công việc xung quanh?

Trả lời

1

Chế độ xem UICallout là chế độ xem phụ của MKAnnotationView. Vì vậy, tôi nghĩ rằng nếu bạn sẽ mang bản đồ ping đến phía trước, UICAlloutView cũng sẽ ở đó.

+0

làm thế nào để bạn mang UICalloutView vào phía trước lập trình? – si28719e

2

Nếu bạn đang sử dụng chế độ xem chú thích tùy chỉnh, bạn có thể thêm người quan sát cho thuộc tính đã chọn sẽ hoạt động như một đại biểu cho thời điểm ghim được chọn.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{ 
    MKAnnotation *annview = ...code to either dequeue or create new object... 
    [annview addObserver:self forKeyPath:@"selected" options:NSKeyValueObservingOptionNew context:@"selectedmapannotation"];    
    return annview; 
} 

sau đó bạn có thể theo dõi tình trạng chọn với

- (void)observeValueForKeyPath:(NSString *)keyPath 
        ofObject:(id)object 
        change:(NSDictionary *)change 
        context:(void *)context; 

Câu trả lời được liên kết bởi Mugunth Kumar cũng sẽ cung cấp cho bạn những kết quả mong muốn nó chỉ là bạn đã thực hiện đề cập đến đại biểu như chức năng trong câu hỏi của bạn.

EDIT:

Dưới đây là một ví dụ về các nội dung của observeValueForKeyPath: ofObject: thay đổi: bối cảnh: Phương pháp

NSString *action = (NSString*)context; 

if([action isEqualToString:@"selectedmapannotation"]){ 
    BOOL annotationAppeared = [[change valueForKey:@"new"] boolValue]; 
    MKAnnotationView *ann = (MKAnnotationView *)object; 

    if (annotationAppeared) { 
     // do something with the annotation when it is selected 
    } 
    else { 
     // do something with the annotation when it is de-selected 
    } 
} 
+0

bạn có thể giải thích về điều này không? triển khai observValueForKeyPath sẽ trông như thế nào? bạn có thể đưa ra một ví dụ không? – si28719e

+0

đã chỉnh sửa câu trả lời để thêm triển khai mẫu, hy vọng điều đó sẽ hữu ích! – acqu13sce

Các vấn đề liên quan