需要查找由用户手动拖动或自动聚焦而更改的mapView区域

时间:2019-04-24 13:29:45

标签: ios swift

我有带某些注释的mapView。我需要对用户拖动的区域更改和设置区域进行单独的操作(自动聚焦)。有什么方法可以找到在调用regionDidChangeAnimated方法时是否手动拖动用户。

我已经检查了MKMapView,MKVisibleRect,区域的所有默认属性。没有与用户手动拖动或未拖动而更改的检测地图视图的查找相关的属性

1 个答案:

答案 0 :(得分:0)

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

我成功使用了UIPanGestureRecognizer,如下所示:

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

您还必须使用以下命令将UIPanGestureRecognizer添加到地图中

yourMap.addGestureRecognizer(mapPanGestureRecognizer)

然后您可以通过检查手势的state来管理#selector函数中发生的情况,

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