滑动和双击缩放时MKAnnotationView消失

时间:2010-02-17 06:53:26

标签: iphone quartz-graphics mkmapview drawrect mkannotation

我已经将MKAnnotationView子类化,以创建一个注释,该注释基本上通过覆盖drawRect在地图视图上的点周围绘制一个圆。在以下情况下(在模拟器中)圆圈绘制正常:

  • 初次加载地图视图
  • 滑动时,但仅在触摸结束前停止滑动动作时(因此触摸结束后地图不会“滑行”)
  • 捏缩放

当发生以下任何操作时,圆圈将消失:

  • 在触摸结束后滑动地图“滑行”
  • 双击缩放

如果“工作”组中的任何操作在消失后进行,则该圈将重新出现。

可能是什么原因引起的?我不是抽奖/展示/布局专家(坦率地说,我也不是对象C或iPhone专家)。

以下是一些稍微简化的代码,它似乎与我的MKAnnotationView子类最相关:

- (void)drawRect:(CGRect)rect {
    // Drawing code
 [self drawCircleAtPoint:CGPointMake(0,0) withRadius:self.radiusInPixels andColor:self.circleAnnotation.color];
}


- (void)drawCircleAtPoint:(CGPoint)p withRadius:(int)r {
    CGContextRef contextRef = UIGraphicsGetCurrentContext();

    float alpha = 0.75;

    CGContextSetRGBFillColor(contextRef, 255, 0, 0, alpha);
    CGContextSetRGBStrokeColor(contextRef, 255, 0, 0, alpha);

    // Draw a circle (border only)
    CGContextStrokeEllipseInRect(contextRef, CGRectMake(0, 0, 2*r, 2*r));
}

1 个答案:

答案 0 :(得分:2)

你添加了这个方法吗?

- (void)setAnnotation:(id <MKAnnotation>)annotation
{
    [super setAnnotation:annotation];
    [self setNeedsDisplay];
}

这取自Apple的示例代码应用程序WeatherMap,该应用程序已从Apple开发人员中心删除,但可以在github上找到 https://github.com/acekiller/iOS-Samples/blob/master/WeatherMap/Classes/WeatherAnnotationView.m