具有可点击标注的MKPinAnnotationView

时间:2015-02-15 02:41:54

标签: ios swift mkmapview

我正在尝试创建一个带有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
}

这给了我这个:

enter image description here

我认为这应该是可能的,因为这是我用Apple地图观察的行为。您可以单击其注释的标注上的任何位置以进入详细视图。

另外 - 当我点击标注按钮旁边的任何地方时,它表现为一个按钮 - 它突出显示了点按时间。但是calloutAccessoryControlTapped将不会被调用,我找不到任何可以为该事件调用的API函数。

我尝试了添加一些UIGestureRecognizers的方法,但考虑到callout视图是在飞行中创建的并且不是注释视图,这确实不起作用,因此实际上没有地方可以将它挂钩。

编辑:JJMapAnnotation是MKPointAnnotation的子类

0 个答案:

没有答案