点击时MKViewMap自定义注释消失

我正在为MKMap创build自定义注释。 这是工作,但是当我点击一个注释,注释消失(见图),然后标注显示并消失。

(我已经完成了这个教程https://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial )

这里的自定义注释:

class Trail:NSObject,MKAnnotation {

let title: String? let difficulty: String let coordinate: CLLocationCoordinate2D var enableInfoButton : Bool init(title: String, difficulty: String, coordinate: CLLocationCoordinate2D, enableInfoButton : Bool) { self.title = title self.difficulty = difficulty self.coordinate = coordinate self.enableInfoButton = enableInfoButton; super.init() } var subtitle: String? { return title } func annotationView() -> MKAnnotationView { let view = MKAnnotationView(annotation: self, reuseIdentifier: "trailPin") view.translatesAutoresizingMaskIntoConstraints = false view.enabled = true view.canShowCallout = true view.rightCalloutAccessoryView = UIButton(type: UIButtonType.Custom) view.centerOffset = CGPointMake(0, -32) if(difficulty == Difficulty.HARD){ view.image = UIImage(named: "ic_map_poi_trail_hard") } else if(difficulty == Difficulty.AVERAGE){ view.image = UIImage(named: "ic_map_poi_trail_average") } else if(difficulty == Difficulty.EASY){ view.image = UIImage(named: "ic_map_poi_trail_easy") } /*if(self.enableInfoButton){ let detailButton = UIButton(type: UIButtonType.System) as UIButton detailButton.frame.size.width = 35 detailButton.frame.size.height = 35 detailButton.backgroundColor = UIColor.whiteColor() detailButton.setImage(UIImage(named: "map"), forState: .Normal) detailButton.addTarget(self, action: #selector(Trail.infoClicked(_:)), forControlEvents: .TouchUpInside) view.leftCalloutAccessoryView = detailButton }*/ return view } func infoClicked(sender: AnyObject?) { print("infoClicked") } 

}`

并在视图控制器中:

func mapView(mapView:MKMapView,viewForAnnotation annotation:MKAnnotation) – > MKAnnotationView? {

  if (annotation.isKindOfClass(Trail)) { let customAnnotation = annotation as? Trail mapView.translatesAutoresizingMaskIntoConstraints = false var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier("trailPin") as MKAnnotationView! if (annotationView == nil) { annotationView = customAnnotation?.annotationView() } else { annotationView.annotation = annotation; } //self.addBounceAnimationToView(annotationView) return annotationView } else { let reuseId = "trailPin" var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId) if anView == nil { anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId) anView!.image = UIImage(named:"map") anView!.canShowCallout = true } else { //we are re-using a view, update its annotation reference... anView!.annotation = annotation } return anView } } 

谢谢=)

再见

我自己find了解决scheme,这是行:

view.translatesAutoresizingMaskIntoConstraints = false

我删除它,它的工作