检测MKOverlay上的触摸

时间:2013-03-16 21:00:47

标签: ios objective-c mkmapview mkoverlay

如何在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方法没有被触发。我想要的是,只要用户点击该折线,就会显示一个弹出视图,显示折线的细节。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

即使命中超出界限,您也必须修改视图hitTest以检查其子项。