gpt4 book ai didi

ios - 如何将右附件按钮放在当前位置标注上?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:57:01 25 4
gpt4 key购买 nike

我想向当前用户位置标注添加一个右附件按钮。我发现了一些关于该主题的问题,但它们似乎对我不起作用。这是我到目前为止的代码,我已经成功地将正确的附件按钮放在我的其他注释上:

- (MKAnnotationView *)mapView:(MKMapView *)_mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
//TODO: this doesn't seem to be working?
if ([annotation isKindOfClass:[MKUserLocation class]]) {
MKAnnotationView * aV = [mapView viewForAnnotation:annotation];
aV.canShowCallout = YES;
aV.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return nil;
}
return nil;
}

我在一些地方读到解决方案是为用户位置制作自定义 MKAnnotationView 但我还没有看到如何为用户位置完成此操作的演示 - 我已经成功地为我 map 上的其他注释。

示例代码将是最有帮助的,谢谢!

最佳答案

您应该再次获得用户位置注释 View 的引用。以下方法在 iOS >= 5

中被调用

选项 1

- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
MKAnnotationView *aV;
for (aV in views) {
if ([aV.annotation isKindOfClass:[MKUserLocation class]]) {
MKAnnotationView* annotationView = aV;
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}
}
}

请参阅下面的委托(delegate)方法

替代方法

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
MKAnnotationView* annotationView = [mapView viewForAnnotation:userLocation];
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
}

确保添加委托(delegate)方法,以便在点击标注按钮时可以执行任何操作:

-(void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 

在任何 iOS 中,这些方法中的任何一个都会被调用,您可以向其添加右/左 accessorybutton。通过检查用户位置注释 View 的 subview 计数,确保您不会两次添加此按钮。

你也可以在运行时添加/删除 accessoryviews,但我相信你不会想删除它。buttons

关于ios - 如何将右附件按钮放在当前位置标注上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9132299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com