需要查找由用户手动拖动或自动聚焦的地图视图区域更改



我有一些注释的mapView。我需要对用户拖动的区域更改和设置区域(自动对焦(执行单独的操作。有没有办法在区域更改动画方法调用时找到手动拖动或不拖动的用户。

我已经检查了MKMapView,MKVisibleRect,region的所有默认属性。没有与查找检测地图视图相关的属性,无论用户是否手动拖动都会更改

不幸的是,您必须使用 UIPanGestureRecognizer 执行此操作。

我已经成功地使用了如下所示的UIPanGestureRecognizer:

lazy var mapPanGestureRecognizer: UIPanGestureRecognizer = {
    let gr = UIPanGestureRecognizer(target: self, action: #selector(draggedMap))
    gr.delegate = self
    return gr
}()

您还必须将 UIPanGestureRecognizer 添加到地图中

yourMap.addGestureRecognizer(mapPanGestureRecognizer)

然后,您可以通过检查手势的状态来管理 #selector 函数中发生的情况,如下所示

@objc func draggedMap(panGestureRecognizer: UIPanGestureRecognizer) {
    // Check to see the state of the passed panGestureRocognizer
    if panGestureRecognizer.state == UIGestureRecognizer.State.began {
        // Do something
    }
}

最新更新