Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 拖动时,快速添加注释操作在地图上重复_Ios_Swift - Fatal编程技术网

Ios 拖动时,快速添加注释操作在地图上重复

Ios 拖动时,快速添加注释操作在地图上重复,ios,swift,Ios,Swift,我现在正在学习如何使用swift 2.0在地图上添加图钉或注释。我做了一些研究,实现了当用户长按某个位置时添加注释的目标。然而,我的代码有一个bug,当我长按一个点,添加一个pin时,如果我不松开手指并将其拖动到屏幕上,添加操作将重复。如图所示 这是我的密码: override func viewDidLoad() { super.viewDidLoad() let longPressingGesture = UILongPressGestureRecognizer(target: self

我现在正在学习如何使用swift 2.0在地图上添加图钉或注释。我做了一些研究,实现了当用户长按某个位置时添加注释的目标。然而,我的代码有一个bug,当我长按一个点,添加一个pin时,如果我不松开手指并将其拖动到屏幕上,添加操作将重复。如图所示

这是我的密码:

override func viewDidLoad() {
super.viewDidLoad()

let longPressingGesture = UILongPressGestureRecognizer(target: self, action: "addPinsOnMaps:")

longPressingGesture.minimumPressDuration = 1.2

mapView.addGestureRecognizer(longPressingGesture)

}

func addPinsOnMaps(gesturePressing: UIGestureRecognizer){

    let touchPoint = gesturePressing.locationInView(self.mapView)

    mapView.convertPoint(touchPoint, toCoordinateFromView: self.mapView)

    let annotation = MKPointAnnotation()
    annotation.title = "This Place"
    annotation.subtitle = "Gonna stay here for a while"
    annotation.coordinate = coordinates
    mapView.addAnnotation(annotation)
}

如有任何建议或提示,将不胜感激!谢谢

您需要添加一个
UIgestureRecognitizerState
来检查手势,在您的动作方法之前添加此代码

func action(gestureRecognizer: UIGestureRecognizer) {

    if gestureRecognizer.state != UIGestureRecognizerState.Began {
        return
    }

尝试将LongPressing手势。minimumPressDuration=1.2设置为0@FrancescStudio,谢谢你的回答,但那不行。我想我没说清楚吧?就我而言,minimumPressDuration属性用于识别手势的最短时间。但我的问题是,如果我不松开手指,与手势相关的功能不会结束,这将导致注释被一次又一次地创建。我希望用户在一次长按中只能创建一个注释。我运行了一个示例代码,遇到了相同的问题,您只需添加
uigesturecognizerstate
函数即可查看我发布的答案。