mapView:didSelectAnnotationView:无法正常运行.

Nat*_*ate 6 mkannotationview ios

我正在构建一个使用内置地图视图的IOS应用程序.我成功地放置了自定义注释等.但是,我在按下注释时调用的委托函数有问题(mapView:didSelectAnnotationView).

第一次按下注释时,该函数被正确调用.但是,如果我再次单击相同的注释,则该函数不会触发.如果我此时单击不同的注释,则函数将触发但是如果我再次单击THAT注释,则该函数不会触发.基本上,我永远不能连续两次点击相同的注释.委托函数只会在第一次调用.有谁遇到过这个问题?有什么特别的地方我应该找虫子吗?

Nat*_*ate 5

朋友提出了一个想法,结果证明是正确的.当didSelectAnnotationView触发时,它实际上将注释标记为以某种方式选择.然后再次单击它时,委托函数不会触发,因为它已被"选中".完成所需操作后,必须通过调用以下函数手动取消选择注释.

[mapView deselectAnnotation:view.annotation animated:false];
Run Code Online (Sandbox Code Playgroud)


Ber*_*sms 5

好吧,当您考虑它时,您已经选择了该注释视图。委托人告诉您该引脚已被选中是没有意义的。

一个简单的解决方法是在委托调用中将注释设置为取消选择。这应该允许您再次接到电话。

[annotation setSelected:NO animated:NO];
Run Code Online (Sandbox Code Playgroud)

在这里访问您需要调用的方法。 https://developer.apple.com/library/ios/documentation/mapkit/reference/MKAnnotationView_Class/index.html#//apple_ref/occ/instm/MKAnnotationView/setSelected:animated