iOS谷歌地图更改默认标记拖动行为

3

我正在使用Google Maps API。目前当我们尝试拖动标记时,我们必须按住几秒钟,然后地图视图会向上移动几个点,然后才能拖动标记。我想改变这种行为。

我可以在地图视图中覆盖UILongPressGestureRecognizerminimumPressDuration吗?像这样:

for (id gestureRecognizer in mapView.gestureRecognizers)
    {
        if ([gestureRecognizer isKindOfClass:[UILongPressGestureRecognizer class]])
        {
            gestureRecognizer.minimumPressDuration = 0.0f;
        }
    }

我不想将标记器保持几秒钟然后开始拖动它,应该可以立即拖动,并且在拖动过程中地图不会移动。我该怎么做?

1个回答

1

试着用这个尺寸

func recursivlyPrint(subviews: [UIView]){
    for subview in subviews{
        if subview.gestureRecognizers != nil{
            for gesture in subview.gestureRecognizers!{
                print(gesture)
                if gesture is UILongPressGestureRecognizer{
                    (gesture as! UILongPressGestureRecognizer).minimumPressDuration = 0.0
                }
            }
        }
        if subview.subviews.count>0{
            recursivlyPrint(subviews: subview.subviews)
        }
    }
}

在添加标记后,将其运行在mapView的子视图上。这不是最好的方法。更好的方法是访问手势操作的选择器名称,并通过过滤器进行筛选(也许有其他与标记无关的长按手势可能会干扰整个mapView)。iOS中获取UIGestureRecognizer的操作 该方法使用手势识别器类中的私有属性,可能会被禁止(也许?)
编辑:您还可以按子视图的类型进行筛选。

是的,这个方法可以工作,但在拖拽标记时mapView仍然会反弹。现在,在地图上的任何位置点击都不起作用了。“-(void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate”没有被调用。 - NotABot
@thewarri0r9 尝试找到手势识别器的特定选择器。我想在地图视图中搞乱所有 UILongPressGesture 识别器可能会导致这种不良行为。 - DatForis
好的,我通过将minimumPressDuration更改为0.1来解决了那个问题。但是当我尝试拖动标记时,仍然无法移除mapView弹跳动画。 - NotABot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接