我正在开发应用程序,其中用户通过gps进行本地化,然后询问他是否位于特定位置。为了证实这一点,标注泡沫马上向他呈现,询问他是否在特定的地方。自定义MKAnnotation标注按钮
由于有很多类似的问题,我能够做的定制标注泡沫:
我的问题:按钮是“无法点击” 我的猜测:因为这个自定义标注比标准标注泡沫较高,我不得不把它放在负面的“框架”,因此按钮不能点击。这是我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点的属性(标签显示的位置和按钮名称),并用XIB1。
我一直在做这个自定义标注泡沫几天。我尝试使用“异步解决方案”solution,但我无法添加任何其他类型的按钮,然后泄露按钮。
我的下一个尝试是找到比异步解决方案更容易的东西,并将其修改为我的用法。那就是我如何找到tochi's custom callout。
根据他的工作,我可以自定义他泡和更改信息按钮为我的自定义按钮。然而,我的问题仍然是一样的。为了将我的自定义标注视图放在引脚上,我必须给它一个负帧,所以我的按钮只能在最底部5个像素点“可点击”。看来,我必须深入研究ios默认标注泡泡,对其进行子类化并在其中更改标注框架。但我现在真的无望了。
如果你们能向我展示正确的方式,或给我建议,我会很高兴。
罗布太感谢你了,你是真正的救星。我很高兴能够接受并接受你的回答:) – Yanchi
如果我没有在“CustomAnnotation”类中设置标题和副标题,则根本不会调用标注。如何进行? – Satyam
@Satyamsvv如果你将'canShowCallout'设置为'NO',那么对'didSelectAnnotationView'的调用将不会受'title' /'subtitle'的存在或缺失的影响。 – Rob