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 禁用选择/突出显示但不提升和拖动的主要内容,如果未能解决你的问题,请参考以下文章