gpt4 book ai didi

ios - 防止在 MKMapView 中取消选择注释

转载 作者:行者123 更新时间:2023-12-01 18:47:00 26 4
gpt4 key购买 nike

我在我的应用程序中遇到一种情况,我想禁用注释取消选择(除了选择另一个),所以当我点击任何不是注释 View 的地方时,它应该保持当前选定的注释不变。如果我点击另一个注释 View ,它应该选择那个并取消选择另一个。

我希望找到类似于 willDeselectAnnotationView 的东西。在 MKMapViewDelegateisDeselectedMKAnnotationView ,但不幸的是没有这样的事情。我也尝试过覆盖 deselectAnnotationMKMapView 的自定义子类中,但似乎点击触发的取消选择不会调用该功能。

是否可以在保留选择能力的同时禁用注释取消选择?谢谢!

最佳答案

我找到了办法!制作一个名为“allowSelectionChanges”之类的 bool 值,我现在只是将其作为全局变量。然后使用 MKMapView 的子类,里面有这个覆盖函数:

override func gestureRecognizerShouldBegin(gestureRecognizer: UIGestureRecognizer) -> Bool {
return allowSelectionChanges
}

每当您想阻止注释选择和取消选择时,将此变量切换为 false。它不会影响用户在 map 上移动的能力!

这是一个示例,说明当您点击它与它进行交互时,如何使用它来阻止取消选择标注。把它放在你的 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
}

关于ios - 防止在 MKMapView 中取消选择注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34835499/

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