ios – 更新到SDK 1.3.1后,GMSMapView上的拖动/平移手势未被捕获

我通过手势识别器在GMSMapView上捕获拖动/平移手势时遇到了一个奇怪的问题.只有在从GMS 1.2更新到1.3.1之后才会出现此问题,其中(引用 documentation),

touches are consumed more agressively by GMSMapView

我有一个UIViewController在其主视图下持有GMSMapView.我发现GMSMapDelegate没有提供处理拖动/平移手势的方法,因此我向UIViewController添加一个UIPanGestureRecognizer,将其链接到IBAction选择器,并设置引用插座和插座集合,如下面链接的屏幕截图所示:http://i.stack.imgur.com/gktoa.png

因此任何拖动动作都只会触发recognDragOnMap:选择器,如下所示:

-(IBAction)recognizeDragOnMap:(id)sender {
    NSLog(@"recognizeDragOnMap");

    UIGestureRecognizer *gestureRecognizer = (UIGestureRecognizer *)sender;
    if (gestureRecognizer.state != UIGestureRecognizerStateEnded) {
        NSLog(@"Still dragging");
        return;
    }
    NSLog(@"DragEnded");

    GMSCameraPosition *position;

    if ((position = self.mapView.camera)) {
        self.automaticCameraPositionChange = NO;
        CLLocationCoordinate2D coordinate = [position targetAsCoordinate];
        CLLocation *location = [[CLLocation alloc] initWithLatitude:coordinate.latitude longitude:coordinate.longitude];
        [self.origin dragPinToLocation:location];
    } else {
        NSLog(@"No map camera");
    }
}

此设置过去在GMS 1.2.0下完美运行.更新后,GMSMapView会像过去一样响应手势,但上面的方法永远不会被调用

任何人都知道是什么和/或如何解决它?

解决方法

对于1.4或更高版本,您只需在GMSUISettings对象中设置consumemesGesturesInView = NO.

如果你这样做,请注意,当你只想与地图交互时,你将不得不处理可能使你的超级视图做事情的事件…我的意思是,例如,拖动添加一个GMSMapView的东西滚动视图将拖动滚动滚动视图!

相关文章

我正在用TitaniumDeveloper编写一个应用程序,它允许我使用Ja...
我的问题是当我尝试从UIWebView中调用我的AngularJS应用程序...
我想获取在我的Mac上运行的所有前台应用程序的应用程序图标....
我是一名PHP开发人员,我使用MVC模式和面向对象的代码.我真的...
OSX中的SetTimer在Windows中是否有任何等效功能?我正在使用...
我不确定引擎盖下到底发生了什么,但这是我的设置,示例代码和...