gpt4 book ai didi

ios - 确定 MKMapView 是否在 Swift 2.0 中被拖动/移动

转载 作者:搜寻专家 更新时间:2023-10-30 22:24:39 25 4
gpt4 key购买 nike

我如何检测用户何时拖动或移动 MKMapView 以便,例如,防止自动归位到用户的当前位置。

最佳答案

注意:这个答案是可能的,并且改编自 Jano 对 Objective-C 相同问题的回答:determine if MKMapView was dragged/moved .谢谢Jano .

要正确检测 map 拖动,您必须添加 UIPanGestureRecognizer。这是拖动手势识别器(平移 = 拖动)。

第 1 步:在 viewDidLoad (Swift 2) 中添加手势识别器

override func viewDidLoad() {
super.viewDidLoad()
// All your other setup code
let mapDragRecognizer = UIPanGestureRecognizer(target: self, action: "didDragMap:")
mapDragRecognizer.delegate = self
self.mapView.addGestureRecognizer(mapDragRecognizer)
}

上述手势识别器设置的 Swift 3 版本(选择器语法已更改)

override func viewDidLoad() {
super.viewDidLoad()
let mapDragRecognizer = UIPanGestureRecognizer(target: self, action: #selector(self.didDragMap(gestureRecognizer:)))
mapDragRecognizer.delegate = self
self.mapView.addGestureRecognizer(mapDragRecognizer)
}



第 2 步:将协议(protocol) UIGestureRecognizerDelegate 添加到 View Controller ,使其作为委托(delegate)工作。

class MapViewController: UIViewController, UIGestureRecognizerDelegate

第 3 步:为 UIPanGestureRecognizer 添加以下代码,以便与 MKMapView 中现有的手势识别器一起工作:

func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool {
return true
}

第 4 步:如果您想在每次拖动时调用您的方法一次而不是 50 次,请检测选择器中的“拖动结束”或“拖动开始”状态:

func didDragMap(gestureRecognizer: UIGestureRecognizer) {
if (gestureRecognizer.state == UIGestureRecognizerState.Began) {
print("Map drag began")
}

if (gestureRecognizer.state == UIGestureRecognizerState.Ended) {
print("Map drag ended")
}
}

希望这对有需要的人有帮助!

关于ios - 确定 MKMapView 是否在 Swift 2.0 中被拖动/移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33405449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com