如何在Apple Maps应用程序的userLocation(蓝点)标注中显示DisclosureButton?
现在我可以更改其标题和副标题,但我希望提供自定义标注视图。因此,如果我点击蓝点,它除了标题和副标题外还可以显示一个按钮。这样,当我点击按钮时,它可以引导我到另一个视图。 当注释== self.mapView.userLocation时,我在viewForAnnotation中返回了MKAnnotationView。但是,标注可以显示更新的标题和副标题,但不能显示我添加的按钮。
我真的需要这个功能,我希望得到任何帮助和建议!
答案 0 :(得分:10)
我已经尝试了 camdaochemgio 的解决方案,但它仅适用于第二次点击。这是一个始终有效的解决方案:
-(void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
{
for (MKAnnotationView* view in views)
{
if ([view.annotation isKindOfClass:[MKUserLocation class]])
{
view.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
}
}
答案 1 :(得分:2)
对于annotationView,请设置
myAnnotationView.canShowCallout=YES;
然后添加两个按钮
myAnnotationView.leftCalloutAccessoryView=myLeftButton;
myAnnotationView.rightCalloutAccessoryView=myRightButton;
按钮可以是普通按钮,自定义按钮或其中一种预定义类型。像这样:
myAnnotationView.rightCalloutAccessoryView=[UIButton buttonWithType:UIButtonTypeDetailDisclosure];
然后添加calloutAccessoryControlTapped:
方法来处理点按。
答案 2 :(得分:1)
- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view {
if ([view.annotation isKindOfClass:[MKUserLocation class]] && !view.rightCalloutAccessoryView) {
view.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
}