【问题标题】:Detect touches on MKOverlay检测 MKOverlay 上的触摸
【发布时间】:2013-03-16 21:00:46
【问题描述】:

如何检测 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 方法没有被触发。我想要实现的只是在用户点击该折线时显示一个显示折线详细信息的弹出视图。

【问题讨论】:

  • 您找到解决方案了吗,因为我现在也面临同样的问题,如果您找到解决方案,您可以在这里发布吗?

标签: ios objective-c mkmapview mkoverlay


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-10-19
      • 2013-06-25
      相关资源
      最近更新 更多