我在通过手势识别器捕获 GMSMapView 上的拖动/平移手势时遇到了一个奇怪的问题。此问题仅在从 GMS 1.2 更新到 1.3.1 后才出现,其中(引用文档 https://developers.google.com/maps/documentation/ios/releases),
GMSMapView 更积极地消耗触摸
我有一个 UIViewController 在其主视图下持有一个 GMSMapView 。我发现 GMSMapDelegate 不提供处理拖动/平移手势的方法,因此我向 UIViewController 添加了 UIPanGestureRecognizer,将其链接到 IBAction 选择器,并设置引用插座和插座集合,如此处链接的屏幕截图所示:https://i.stack.imgur.com/gktoa.png https://i.stack.imgur.com/gktoa.png
所以任何拖动动作都会简单地触发recognizeDragOnMap:
选择器,如下:
-(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或更高版本,您只需设置consumesGesturesInView = NO
在您的 GMSUISettings 对象中。
如果您这样做,请注意,当您只想与地图交互时,您将必须处理可能使您的超级视图执行某些操作的事件...我的意思是,例如,将 GMSMapView 拖动到添加到滚动视图将在拖动时滚动滚动视图!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)