我正在尝试在MKAnnotationView的rightcalloutAccessoryView中显示自定义图像,以代替DiscreakmentButton,但是它没有出现:
这是我的代码:
UIButton *rightButton = [UIButton new];
UIImage * rightImage = [UIImage imageNamed:@"blue-car"];
[rightButton setImage:rightImage forState:UIControlStateNormal];
annotationView.rightCalloutAccessoryView = rightButton;
当我执行上述操作时,如果单击,则不会显示图像,并且什么也不会发生。
但是,如果我使用以下内容,则显示详细的discolosureButton,但确实出现图像并且可以点击标注。
annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
自定义按钮代码中缺少哪些阻止按钮显示或执行任何操作的东西?
答案 0 :(得分:0)
在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搜索合适的目标(这里是mapView委托)
实际上,根据文档,您的代码应该可以工作(由于UIButton是UIControl的子类,因此应调用mapView委托的- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control
。