代码之家  ›  专栏  ›  技术社区  ›  user1904273

在Objective-C的MKAnnotation中将rightCalloutAccessoryView中的detailDisclosureButton替换为customButton

  •  1
  • user1904273  · 技术社区  · 7 年前

    我正试图在MKAnnotationView的rightcalloutAccessoryView中显示自定义图像,以代替“披露”按钮,但它没有出现:

        UIButton *rightButton = [UIButton new];
        UIImage * rightImage = [UIImage imageNamed:@"blue-car"];
    
        [rightButton setImage:rightImage forState:UIControlStateNormal];
    annotationView.rightCalloutAccessoryView = rightButton;
    

    当我执行上述操作时,不会出现任何图像,如果点击,则不会发生任何事情。

    但是,如果我使用下面的“细节丢失”按钮,则会显示图像,并且标注是可点击的。

    annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    

    我的自定义按钮代码中缺少什么阻止按钮出现或执行任何操作?

    0 回复  |  直到 7 年前
        1
  •  0
  •   dieterdreist    6 年前

    在MKAnnotationView子类中,您可以简单地提供如下视图:

    - (UIView*) rightCalloutAccessoryView {
        UIView *aView = [[UIView alloc] initWithFrame:yourFrame];
    
        // configure your view as you like...
    
    
        return aView;
    }
    

    你的密码里少了什么?可能是一个动作,例如。

    [rightButton addTarget:nil action:@selector(showDetailCallout:) forControlEvents:UIControlEventTouchUpInside];
    

    此代码将起作用,因为nil目标将使ios搜索合适的目标(这里是mappview委托)

    - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 应该打电话给你。