美文网首页
关于给地图大头针加点击事件

关于给地图大头针加点击事件

作者: 碧玉小瑕 | 来源:发表于2017-01-19 11:59 被阅读204次

    #pragma mark - MKMapViewDelegate

    -(MKAnnotationView*)mapView:(MKMapView*)mapView viewForAnnotation:(id)annotation

    {

    NSString*identifer =@"SMAnonotationView";

    SMAnonotationView*anonotationView = (SMAnonotationView*)[mapViewviewForAnnotation:annotation];

    if(!anonotationView) {

    anonotationView = [[SMAnonotationViewalloc]initWithAnnotation:annotationreuseIdentifier:identifer];

    anonotationView.model=self.anonotionModel;

    anonotationView.delegate=self;

    }

    anonotationView.delegateView=self;

    returnanonotationView;

    }

    换上自定义大头针后,发现其frame为0,无法点击,之后思路

    1.加frame,但位置不对达不到预期效果

    2.-(void)mapView:(MKMapView*)mapView didSelectAnnotationView:(MKAnnotationView*)view

    {

    DebugLog(@"didSelectAnnotationView");

    }

    这个方法在系统大头针会调用,而且一旦点击将被选择,有坑,躲开

    3.- (UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event

    {

    UIView*fitView = [superhitTest:pointwithEvent:event];

    //转换坐标系

    CGPointnewPoint = [self.anonotationViewconvertPoint:pointfromView:self];

    //判断触摸点是否在view上

    if(CGRectContainsPoint(self.anonotationView.bounds, newPoint)) {

    fitView =self.anonotationView;

    returnfitView;

    }

    returnnil;

    }

    此为正确方法,获取超出super view的点击事件。

    相关文章

      网友评论

          本文标题:关于给地图大头针加点击事件

          本文链接:https://www.haomeiwen.com/subject/drlibttx.html