4

我有一个MKAnnotationViewXIB. 当我第一次加载地图视图时,我有几个标准MKAnnotationView的 .

当用户选择一个时,将MKAnnotationView呈现自定义。我希望用户能够点击自定义注释视图中的任何位置以呈现新的视图控制器。

我尝试过的(所有这些都是我在 StackOverflow 上找到的建议):

奇怪的是,如果我在注释存在时拖动地图,按钮可以正常工作。该问题仅在我第一次显示自定义视图时出现。

任何想法,将不胜感激。

4

1 回答 1

0

你应该查看 MKMapKit Delegate 文档,它有很多很好的方法可以用来做你想做的事情。我绝对不会尝试将 UIButton 添加到注释视图。

管理注释视图 – mapView:viewForAnnotation: – mapView:didAddAnnotationViews: – mapView:annotationView:calloutAccessoryControlTapped: 拖动注释视图 – mapView:annotationView:didChangeDragState:fromOldState: 选择注释视图 – mapView:didSelectAnnotationView:
– mapView:didDeselectAnnotationView:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation  {
if([annotation isKindOfClass: [MKUserLocation class]])
{
    return nil;
}
else if([annotation isKindOfClass:[MYCLASS class]])
{
    static NSString *annotationViewReuseIdentifier = @"annotationViewReuseIdentifier";
    MKAnnotationView *annotationView = (MKAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:annotationViewReuseIdentifier];
    if (annotationView == nil)
    {
        annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewReuseIdentifier];
    }

    //Add an Image!
    annotationView.image = [UIImage imageNamed:@"trashMarker.png"];

    //Move the Frame Around!
    [annotationView setFrame:CGRectMake(annotationView.frame.origin.x, annotationView.frame.origin.y - annotationView.frame.size.height, annotationView.frame.size.height, annotationView.frame.size.width)];

    //Finally Set it as the annotation!
    annotationView.annotation = annotation;

    //Return the annotationView so the MKMapKit can display it!
    return annotationView;
}}

您的 MKAnnotation 子类(IE 符合协议)默认情况下应该包含一个标签(我认为),但如果它不只是自己添加一个属性,那么您可以区分地图上的不同标记。你的方法应该是这样的,

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view  {
MYCLASS *selectedMapPin = view.annotation;
if(selectedMapPin.tag == MY_PIN_TAG)
{
    //SHOW VIEW CONTROLLER
}}

有关更多示例,您可以参考我们的 Green Up Vermont 开源项目

Green Up Vermont iOS 应用程序

于 2014-01-28T20:00:30.167 回答