我正在尝试创建一个带有callout的引脚注释,可以作为整个部分单击。我写的是这样的,但它并不像预期的那样 - 你需要点击mapView(mapView: MKMapView!, annotationView view: MKAnnotationView!, calloutAccessoryControlTapped control: UIControl!)
的按钮来调用
func mapView(mapView: MKMapView!, viewForAnnotation annotation: JJMapAnnotation!) -> MKAnnotationView! {
if annotation.isKindOfClass(MKUserLocation) {
return nil
}
var annotationIdentifier = "AnnotationIdentifier";
var pinView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: annotationIdentifier)
var rightButton = UIButton.buttonWithType(UIButtonType.DetailDisclosure) as UIButton
pinView.rightCalloutAccessoryView = rightButton;
pinView.animatesDrop = true;
pinView.canShowCallout = true;
return pinView
}
这给了我这个:
我认为这应该是可能的,因为这是我用Apple地图观察的行为。您可以单击其注释的标注上的任何位置以进入详细视图。
另外 - 当我点击标注按钮旁边的任何地方时,它表现为一个按钮 - 它突出显示了点按时间。但是calloutAccessoryControlTapped将不会被调用,我找不到任何可以为该事件调用的API函数。
我尝试了添加一些UIGestureRecognizers的方法,但考虑到callout视图是在飞行中创建的并且不是注释视图,这确实不起作用,因此实际上没有地方可以将它挂钩。
编辑:JJMapAnnotation是MKPointAnnotation的子类