【问题标题】:Button title doesn't show with annotation按钮标题不显示注释
【发布时间】: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


【解决方案1】:
  1. 您是否在地图中添加了注释?
  2. 您是否设置了 MKMapView 的委托?
  3. 是否调用了 viewForAnnotation 函数?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-18
    • 2012-10-06
    • 2021-06-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-19
    相关资源
    最近更新 更多