AnnotationView点击不灵敏的问题

最近一个项目用到了自定义地图标注,标注是自定义的动画实现的,在自定义的类

@interface BIDAnnotationView : MKAnnotationView

  中用 UIImageView定义了这样一个动画

UIImageView *m_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(-8, -8, 16, 16)];
    [m_imageView setAnimationImages:[NSArray arrayWithObjects:[UIImage imageNamed:@"black.png"],[UIImage imageNamed:@"red.png"],nil]];
    //[m_imageView setImage:[UIImage imageNamed:@"red.png"]];
    [m_imageView setAnimationDuration:1.0f];
    [m_imageView setAnimationRepeatCount:0];
    [m_imageView startAnimating];
    
    [self addSubview:m_imageView];

动画实现良好,但是问题是点击这个点有时并不会弹出calloutView,特别是当这些点在某个角落的时候,痛苦了好久好久好久好久。。。。。

终于想到解决方案,原因是MKAnnotationView中有个image属性,此image代表了 MKAnnotation的外观,只有点击它才会触发

- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view
{
   
}

解决办法:用一张透明图片蒙在自定义的这个UIImageView上面

self.image=[UIImageimageNamed:@"transparent36.png"];

并且调整一下原来UIImageView的位置

 UIImageView *m_imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 16, 16)];
    [m_imageView setAnimationImages:[NSArray arrayWithObjects:[UIImage imageNamed:@"black.png"],[UIImage imageNamed:@"red.png"],nil]];
    //[m_imageView setImage:[UIImage imageNamed:@"red.png"]];
    [m_imageView setAnimationDuration:1.0f];
    [m_imageView setAnimationRepeatCount:0];
    [m_imageView startAnimating];
    
    [self addSubview:m_imageView];

OK了。

posted @ 2012-12-19 10:53  bohan  阅读(356)  评论(0编辑  收藏  举报