如何以编程方式选择MKUserLocation? [英] How can the MKUserLocation be programmatically selected?
问题描述
Titles and subtitles can be added to the user location that iOS shows using MKUserLocation. When the user taps on the location, these will show in a bubble above the location. The thought bubbles for other annotations can be shown by selecting the annotation with setSelected:animated:
from MKAnnotationView. Unfortunately, MKUserLocation does not descend from MKAnnotationView.
如何以编程方式选择用户位置,以便注释显示在用户位置上方而无需用户先点击它?
How can I programmatically select the user location so the annotation appears over the user location without the user first tapping on it?
推荐答案
MKAnnotationView
的文档说明了有关其setSelected:animated:
方法(及其selected
属性类似的内容)的信息:
The documentation for MKAnnotationView
says this about its setSelected:animated:
method (and something similar for its selected
property):
您不应直接调用此方法.
You should not call this method directly.
而是使用MKMapView
方法selectAnnotation:animated:
.如果使用didAddAnnotationViews
委托方法调用它,则可以确保注释视图已准备好显示标注,否则调用selectAnnotation
将无济于事.
Instead, use the MKMapView
method selectAnnotation:animated:
. If you call it in the didAddAnnotationViews
delegate method, you can be sure the annotation view is ready to show the callout otherwise calling selectAnnotation
will do nothing.
例如:
-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView *av in views)
{
if ([av.annotation isKindOfClass:[MKUserLocation class]])
{
[mapView selectAnnotation:av.annotation animated:NO];
//Setting animated to YES for the user location
//gives strange results so setting it to NO.
return;
}
}
}
这篇关于如何以编程方式选择MKUserLocation?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!