【问题标题】:iOS Google maps change default marker dragging behavioriOS Google 地图更改默认标记拖动行为
【发布时间】:2017-10-19 10:04:19
【问题描述】:

我正在研究 Google 地图 API。目前,当我们尝试拖动标记时,我们必须按住几秒钟,然后 mapView 上升几个点,然后我们才能拖动标记。我想改变这种行为。

我可以在 mapView 中覆盖 UILongPressGestureRecognizerminimumPressDuration 吗?在某种程度上像这样:

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

基本上我不想按住标记几秒钟然后开始拖动它,它应该是可以瞬时拖动的,并且地图在拖动过程中不应该移动。我如何做到这一点?

【问题讨论】:

    标签: ios objective-c google-maps


    【解决方案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 搞砸)。 Getting the Action of UIGestureRecognizer in iOS 此方法使用手势识别器类中的私有属性,可能不鼓励使用(也许?)

    编辑:您可能还想按子视图的类型进行过滤

    【讨论】:

    • 是的,这可行,但 mapView 在拖动标记时仍会反弹。现在在任何地方点击地图都停止工作了。 - (void)mapView:(GMSMapView *)mapView didTapAtCoordinate:(CLLocationCoordinate2D)coordinate 没有接到电话。
    • @thewarri0r9 尝试找到手势识别器的特定选择器。我想在 mapView 中使用所有 UILongPressGesture 识别器可能会导致这种不需要的行为
    • 好的,我通过将 minimumPressDuration 更改为 0.1 解决了这个问题。但是当我尝试拖动标记时,我仍然无法删除 mapView 弹跳动画。
    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    相关资源
    最近更新 更多