MKPinAnnotationView 禁用选择/突出显示但不提升和拖动

Posted

技术标签:

【中文标题】MKPinAnnotationView 禁用选择/突出显示但不提升和拖动【英文标题】:MKPinAnnotationView disable selection/highlight but not lift and drag 【发布时间】:2013-08-29 19:35:48 【问题描述】:

我有一个 MKPinAnnotationView,我希望它能够长按并拖动,但不能点击并选择。有时用户会以正确的方式触摸(在 pin 上短暂触摸)并且 pin 将变为突出显示(变暗)而不是抬起和拖动。我使用拖动来显示放大镜,因此当用户触摸图钉并拖动但没有任何反应时,它会有点破坏性。

我是否可以设置某种标志来防止图钉被点击并始终拖动?

我尝试设置以下标志:

annotationView.selected = YES;
annotationView.canShowCallout = NO;
annotationView.highlighted = NO;

这不会阻止选择。我还尝试将.selected 翻转为NO。我想我可以覆盖-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view,但我不确定我可以放什么来绕过选择。而且没有-(BOOL)shouldSelectAnnotationView...函数。

【问题讨论】:

您可能必须对 pin 进行子类化,然后侦听触摸事件并以这种方式阻止触摸。 @Tony 这就是我想我可能要做的。我希望有更简单的方法。 不幸的是它不是很好。我一直在寻找相同类型的东西。我应该把它作为问题的答案吗? @Tony 当然,如果您有一个有效的子类示例,我会接受它。我希望得到一些简单的东西,但如果答案很复杂,那就这样吧。 【参考方案1】:

您很可能必须对 pin 进行子类化。这是我能找到的最好的例子。我不能写一个,因为我不在我的电脑前。 https://github.com/j4n0/callout

祝你好运。

【讨论】:

以上是关于MKPinAnnotationView 禁用选择/突出显示但不提升和拖动的主要内容,如果未能解决你的问题,请参考以下文章

如何在常规 UIView 之上使用 MKPinAnnotationView(而不是在地图上)

实现 MKPinAnnotationView 拖动功能?

MKPinAnnotationView 不动

MKPinAnnotationView 红色图钉替换为图片

MKPinAnnotationView 无法设置自定义图像

自定义 MKPinAnnotationView 颜色