【问题标题】:Intercept touches on UIView over GMSMapView通过 GMSMapView 拦截对 UIView 的触摸
【发布时间】:2013-08-07 02:23:07
【问题描述】:

我正在尝试将 UIView 覆盖在 google GMSMapView 上。目标是拦截滑动,以便了解何时手动移动地图。 (我知道我可以检查 -mapView:willMove: 但无论地图是以编程方式移动还是手动触摸的结果都会被调用)。随着位置的更新,我以编程方式重新居中地图——因为谷歌不像苹果那样为你做这件事。就像那里的每个地图程序一样,一旦用户手动移动地图,我想停止以当前位置为中心。我能想到的捕捉这种情况的唯一方法(不用切换到 mapkit 或等待 Google 添加到 API)是捕捉滑过地图上的视图时的滑动。

为了澄清,我的问题是如何在谷歌地图上放置视图,使其响应滑动并仍然允许该事件传递到 GMSMapView?

我的 map 和 interceptView 都是主视图的兄弟姐妹。 interceptView 有一个gestureRecognizer,设置为不透明,不隐藏并且userInteractionEnabled = YES。因此,interceptView 可以很好地拾取触摸事件。但是下面的地图不动。如果我设置interceptView.userInteractionEnabled = NO,地图工作正常。

通过覆盖 touchesBegan 并调用 GMSMapView 的 touchesBegan 来“传递触摸”不会做任何事情。并且覆盖 hitTest 似乎不是一个选项,因为我不能继承 GMSMapView。有人做过吗?我知道这里有很多关于传递特定事件的内容。我想在两个视图上处理一个特定事件,其中一个是我无法修改代码的谷歌地图层。

【问题讨论】:

    标签: ios uiview uigesturerecognizer gmsmapview


    【解决方案1】:

    mapView:willMove: 接收一个布尔“手势”,如果移动是由用户手势触发的,则为 true,否则为 false。因此,仅当“手势”为真时,您才能停止重新居中地图。这样您就可以确定地图是手动移动的。

    【讨论】:

      【解决方案2】:

      这是一个委托方法检查一下

      - (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate;
      

      【讨论】:

      • 我用它来拦截地图视图中的点击并关闭视图控制器。它运作良好。确保您实现 GMSMapViewDelegate 并执行 mapView.delegate = self;谢谢
      【解决方案3】:

      您可以使用 GMSMapViewDelegete 拦截点击并实现此方法:

      -(void)panoramaView:(GMSPanoramaView *)panoramaView didTap:(CGPoint)point;
      

      例子:

      -(void)viewWillAppear:(BOOL)animated{
          [super viewWillAppear:animated];
          CLLocationCoordinate2D panoramaNear = {latitudine,longitudine};
          GMSPanoramaView *panoView = [GMSPanoramaView panoramaWithFrame:CGRectZero
                                          nearCoordinate:panoramaNear];
          [panoView setDelegate:self];
          self.view = panoView;
      }
      -(void)panoramaView:(GMSPanoramaView *)panoramaView didTap:(CGPoint)point{
      NSLog(@"Tap");
      }
      

      【讨论】:

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