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)
那么坐标永远是最近设置的坐标。如果需要跟踪多个,可以将它们添加到一个数组中。
我想请教函数注解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)
那么坐标永远是最近设置的坐标。如果需要跟踪多个,可以将它们添加到一个数组中。