我有一个习惯MKAnnotationView
。在它的setselected:animated
方法中,我添加了一个从笔尖加载的自定义气泡,调整注释视图的框架以包含此视图并用其他颜色重新绘制注释圆圈,如下所示(第一个 - 未选中,第二个 - 选中,蓝色框架,绿色 - alpha = 0.8 的自定义气泡视图,红色 - 注释视图):
它工作正常,出现气泡,并且只能通过在其外部点击来“关闭”(这就是我增加框架的原因)。我在这个气泡上有一些按钮,如果注释下只有地图没有任何内容,它们是可点击的。
但是,当标注气泡下方有另一个注释时,我可以单击“通过”整个气泡。当我点击其中一个按钮时,点击突出显示出现,但另一个注释被选中,因为didSelectAnnotationView
触发......
我试图使气泡不透明/半透明,没有运气;在按钮上设置 ExclusiveTouch,在视图本身上,没有运气;尽量不要乱帧,还是可以点进去的。我错过了什么吗?
谢谢
编辑:更短:如果此 UIView 下有其他 MKAnnotationView,为什么我可以单击 MKAnnotationView 中的UIView
添加项?addSubview
细节 :
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected)
{
initialFrame = self.frame; // save frame and offset to restore when deselected
initialOffset = self.centerOffset; // frame is correct for a circle, like {{2.35, 1.47}, {12, 12}}
if (!self.customCallout)
{
self.customCallout = [[[NSBundle mainBundle] loadNibNamed:@"CustomCallout" owner:self options:nil] objectAtIndex:0];
}
// adjust annotationview's frame and center
// callout is 200x120, here frame is {{2.35, 1.47}, {200, 132}}
self.customCallout.layer.cornerRadius=5;
self.customCallout.exclusiveTouch = YES;
[self addSubview:self.customCallout];
}
...
}
initWithAnnotation
有这些:
self.canShowCallout = NO; // to appear the subview
self.exclusiveTouch = YES; // ...
self.enabled = YES;
self.opaque = YES;