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了。