【发布时间】:2013-07-20 06:35:59
【问题描述】:
我正在开发应用程序,通过 gps 对用户进行本地化,然后询问他是否位于特定位置。为了确认这一点,标注气泡会立即呈现给他,询问他是否在特定位置。
由于有很多类似的问题,我能够自定义标注气泡:
我的问题:按钮不是“可点击的”
我的猜测:因为这个自定义标注高于标准标注气泡,我不得不将它放在负“框架”中,因此无法单击按钮。这是我的didSelectAnnotationView 方法
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
if(![view.annotation isKindOfClass:[MKUserLocation class]]) {
CalloutView *calloutView = (CalloutView *)[[[NSBundle mainBundle] loadNibNamed:@"callOutView" owner:self options:nil] objectAtIndex:0];
CGRect calloutViewFrame = calloutView.frame;
calloutViewFrame.origin = CGPointMake(-calloutViewFrame.size.width/2 + 15, -calloutViewFrame.size.height);
calloutView.frame = calloutViewFrame;
[calloutView.calloutLabel setText:[(MyLocation*)[view annotation] title]];
[calloutView.btnYes addTarget:self
action:@selector(checkin)
forControlEvents:UIControlEventTouchUpInside];
calloutView.userInteractionEnabled = YES;
view.userInteractionEnabled = YES;
[view addSubview:calloutView];
}
}
CalloutView 只是具有 2 个属性(显示地点和按钮名称的标签)和 xib 的简单类。
我已经做了几天这个自定义标注气泡。我尝试使用“异步解决方案”solution,但我无法添加任何其他类型的按钮,然后是披露按钮。
我的下一个尝试是找到比异步解决方案更容易的东西,并将其修改为我的使用。我就是这样找到tochi's custom callout的。
根据他的工作,我能够为我的自定义按钮自定义他的气泡和更改信息按钮。然而,我的问题仍然是一样的。为了将我的自定义标注视图放在图钉的顶部,我必须给它负帧,所以我的按钮只能在底部 5 个像素中“可点击”。看来,我可能不得不深入挖掘 ios 默认标注气泡,将其子类化并更改其中的标注框架。但我现在真的没希望了。
如果你们能告诉我正确的方法,或者给我建议,我会很高兴的。
【问题讨论】: