How do I make a MKAnnotationView touch sensitive?

前端 未结 4 1130
-上瘾入骨i
-上瘾入骨i 2020-12-05 16:07

I currently have a map view with some annotation on it. I have the annotation with custom images. The problem I am trying to fix is the sensitivity of the images. When I try

4条回答
  •  情话喂你
    2020-12-05 17:01

    @jhabbott solution never worked for me, as I mentioned here.

    I have an image and a label side by side. The image was shown by setting annotationview image property, and the label by adding an UILabel

    I redirected the func point(inside:with:) method to the UILabel one (which included the image zone) and hitTest did return exactly the same view whether I clicked on the label or the image. But label click did not produce any callback...

    Finally, I ended up by enlarging the MKAnnotationView frame to enclose label + image, I set annotationView.image to nil, and I created my custom UIImageView.

    Because I wanted the anchor point at the middle of the image, I had to set a custom one :

    self.frame = CGRect(x: 0, y: 0, width: 
    self.myLabel.frame.width, height: self.myLabel.frame.height)
    self.centerOffset = CGPoint(x: self.frame.width/2, y: self.myImageView.frame.height/2)
    

    Then I deleted point(inside:with:) and hitTest(point:with:) overrides that did nothing.

    And now, for the first time, my annotation view is completely reactive.

提交回复
热议问题