从事件的详细视图中,我想转到一个MapViewController,放大到注释,然后打开它的标注。以下是一些相关代码:
@interface MapViewController : UIViewController<MKMapViewDelegate>
...
- (void) viewWillAppear:(BOOL)animated
{
[self displayAnnotations];
}
- (void) viewDidAppear:(BOOL)animated
{
...
// Zoom in to event
[map setRegion:region animated:YES];
}
- (void) mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
...
regionAnimationEnded = YES;
[self selectAnnotation:a];
...
}
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
...
// check to see if the right view is in the array
...
annotationViewDidAppear = YES;
[self selectAnnotation:a];
...
}
- (void) selectAnnotation:(id<MKAnnotation>)annotation
{
if(annotationViewDidAppear && regionAnimationEnded)
{
if(!openedAnnotationFirstTime)
{
[map selectAnnotation:annotation animated:YES];
openedAnnotationFirstTime = YES;
}
}
}这在ios 6模拟器上有效,但在ios 5.1模拟器(和设备上)中,一个概念视图是不可见的,因为它在文档中这样说:
(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)视图在调用该方法时,指定的视图已经添加到映射中。
因此,这取决于哪个是先完成的:如果区域更改动画最后完成,并且注释视图已经出现,那么它就不能工作,否则就不会。如果有任何帮助,我们将不胜感激。
发布于 2012-10-18 12:46:18
最后,我使用了执行选择器,延迟了实际地图的选择注释:注释动画:是的;这是一个工作,但似乎很好。
发布于 2012-10-16 11:47:27
您的selectAnnotation:方法将被调用两次。尝试只在mapView:regionDidChangeAnimated:委托方法中调用它一次。
https://stackoverflow.com/questions/12911405
复制相似问题