Swift - 如何向 UIGestureRecognizer 函数询问 return 值

Swift - How to ask UIGestureRecognizer function to return value

我想请教函数注解return坐标(CLLocationCoordinate2D)供其他函数使用,这里是我的部分代码:

// ULMap is MapView. 

override func viewDidLoad() {
    var longPressGR = UILongPressGestureRecognizer(target: self, action: "annotation:")
    longPressGR.minimumPressDuration = 1
    UImap.addGestureRecognizer(longPressGR)
}

func annotation(gesture: UIGestureRecognizer){

    //Coordinate
    var touchPoint = gesture.locationInView(self.UImap)
    var coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)

}

我试过这个,但没用:

func annotation(gesture: UIGestureRecognizer) -> CLLocationCoordinate2D{

    //Coordinate
    var touchPoint = gesture.locationInView(self.UImap)
    var coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)

    return coordinate
}

有办法吗?提前致谢。

手势识别器调用之类的东西不能return任何东西,因为你不是调用它们的人。它们被系统调用,因此任何 return 值都将通过您无权访问的代码向上传播。您应该为您的坐标创建一个 class 级别变量并设置它。

所以与其说 var coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)

你声明

var coordinate:CLLocationCoordinate2D

在 class 范围内,然后在您的函数中

coordinate = UImap.convertPoint(touchPoint, toCoordinateFromView: self.UImap)

那么坐标永远是最近设置的坐标。如果需要跟踪多个,可以将它们添加到一个数组中。