如何在MKOverlay或MKPolyline视图中检测触摸事件?我尝试了this并在MKPolylineView上添加了tapgesture但没有成功。
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
MKPolyline *mapPoly = (MKPolyline *)overlay;
MKPolylineView *_ucPolyView = [[MKPolylineView alloc] initWithPolyline:mapPoly];
_ucPolyView.strokeColor = [UIColor redColor];
[_ucPolyView setUserInteractionEnabled:YES];
UITapGestureRecognizer *polylineTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(polylineTapped:)];
polylineTap.numberOfTapsRequired = 1;
[_ucPolyView addGestureRecognizer:polylineTap];
}
-(void)polylineTapped:(UITapGestureRecognizer *)tapGesture
{
NSLog(@"Polyline is %@",tapGesture.view);
}
但是polylineTapped方法没有被触发。我想要的是,只要用户点击该折线,就会显示一个弹出视图,显示折线的细节。
答案 0 :(得分:0)
我遇到了同样的问题,并得出结论,MKMapView会吃掉所有传播到子视图的事件,例如MKOverlayView。我想MKMapView需要完全控制触摸事件才能进行捏合和缩放等。
答案 1 :(得分:0)
即使命中超出界限,您也必须修改视图hitTest以检查其子项。