0

如何检测 MKOverlay 或 MKPolyline 视图上的触摸事件?我已经尝试过这个并在 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 方法没有被解雇。我想要实现的只是在用户点击该折线时显示一个显示折线详细信息的弹出视图。

4

2 回答 2

0

即使命中超出范围,您也必须修改视图 hitTest 以检查其子级。

于 2013-05-09T13:07:06.337 回答
0

我遇到了同样的问题,得出的结论是 MKMapView 吃掉了所有会传播到子视图(例如 MKOverlayView)的事件。我想 MKMapView 需要完全控制触摸事件才能进行捏合和缩放等。

于 2013-03-16T22:01:17.497 回答