我有以下简单的代码:
self.departureAnnotation = [[UserAnnotation alloc] init];
self.departureAnnotation.coordinate = self.map.centerCoordinate;
[self.map addAnnotation:self.departureAnnotation];
[self.map selectAnnotation:self.departureAnnotation animated:YES];
这段代码应该做的(显然)是将注释添加到地图并立即选择它。
尽管如此,运行 iOS 5.1.1 的未越狱 iPhone 4S 上的这段代码没有选择注释(标注未显示),但这在 iOS 6 模拟器中完美运行。
为了解决这个问题,我做了以下操作,这基本上将引脚的选择延迟了 0.2 秒,这是我不喜欢的:
self.departureAnnotation = [[UserAnnotation alloc] init];
self.departureAnnotation.coordinate = self.map.centerCoordinate;
[self.map addAnnotation:self.departureAnnotation];
[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(selectPin:) userInfo:self.departureAnnotation repeats:NO];
- (void)selectPin:(NSTimer *)timer
{
[self.map selectAnnotation:timer.userInfo animated:YES];
}
为什么会这样?
PS:另外,按照相同的模式,如果我检查[self.map viewForAnnotation: self.departureAnnotation]
而不是选择引脚,则视图为零。在那些 0.2 秒的延迟之后,没关系。