我找到了一种方法!制作一个名为“allowSelectionChanges”之类的布尔值,我现在只是将其作为全局变量。然后使用 MKMapView 的子类,里面有这个覆盖函数:
override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
return allowSelectionChanges
}
每当您想阻止注释选择和取消选择时,将此变量切换为 false。它不会影响用户在地图上移动的能力!
这是一个示例,说明当您点击它与它交互时,如何使用它来阻止取消选择标注。把它放在你的MKAnnotationView
子类中:
override func pointInside(point: CGPoint, withEvent event: UIEvent?) -> Bool {
let rect = self.bounds
var isInside = CGRectContainsPoint(rect, point)
if !isInside {
for view in self.subviews {
isInside = CGRectContainsPoint(view.frame, point)
if isInside {
allowSelectionChanges = false
return true
}
}
allowSelectionChanges = true
}
return false
}