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

#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的点击事件。

你可能感兴趣的:(关于给地图大头针加点击事件)