【发布时间】:2023-03-15 11:45:02
【问题描述】:
这是我的问题。由于我的 viewForAnnotation 方法,我创建了一个带有按钮的红色图钉。但是按钮没有显示。这是我的代码:
-(MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{
//static NSString *defaultPinID = @"identifier";
MKPinAnnotationView *pinView = (MKPinAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"];
if ( pinView == nil )
{
pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"identifier"];
pinView.enabled = YES;
pinView.pinColor=MKPinAnnotationColorRed;
pinView.canShowCallout = YES;
UIButton *btn = [UIButton buttonWithType:UIButtonTypeInfoDark];
[btn setTitle:@"test" forState:UIControlStateNormal];
pinView.rightCalloutAccessoryView = btn;
}
else
{
pinView.annotation = annotation;
}
pinView.annotation = annotation;
return pinView;
}
有人可以帮帮我吗?
【问题讨论】:
-
您的问题标题显示“按钮 title 不显示...”。你的意思是你的按钮上没有看到“测试”这个词,而是看到了一个带有圆圈的“i”?如果是这样,您需要将按钮的框架设置为足够大的宽度,以使标题在“i”图标的右侧可见。如果您不想要“i”图标,请使用 UIButtonTypeCustom 而不是 UIButtonTypeInfoDark。
-
我看不到“测试”这个词。我将 UIButtonTypeCustom 与 btn.frame = CGRectMake(0, 0,140, 100) 一起使用,但它不起作用。我尝试了其他按钮类型,但没有结果。要么它不工作(没有显示按钮)要么我可以看到“i”图标(所有没有标题的案例)
-
所以你得到一个标注但你没有看到一个按钮,对吧?当您点击注释时,它是否会在一个小弹出窗口中显示注释标题?确保已设置地图视图委托(将地图视图的委托出口连接到视图控制器或在代码中执行 mapView.delegate = self)。你怎么确定 viewForAnnotation 被调用了?在其中放置一个 NSLog 或断点。
-
我得到一个标注,但我没有看到其中的按钮(对于某些按钮类型,我可以看到“i”图标)。但在所有情况下,都没有显示按钮标题。地图视图委托已设置并调用 viewForAnnotation(感谢 NSLog)。
-
尝试一帧 CGRectMake(0, 0, 140, 30) 因为默认标注的高度限制在大约 32 点。您尝试了 100 分,因此“文本”一词位于标注的框架之外。
标签: ios map uibutton mkmapview mkannotation