0

I want to show a map and add a pin on it which is clickable. The gesture recognizer on the map is working but on the pin not. I tried UIGestureRecognizer and UIPinchRecognizer with giving itself as a parameter and without. No success.

        let imageSize = image.size ?? CGSizeZero

        self.mapImage = UIImageView(image: image)
        self.mapImage.frame = CGRect(origin: CGPoint(x: 0, y: 0), size:imageSize)
        self.scrollView.addSubview(self.mapImage)

        self.scrollView.contentSize = imageSize
        var doubleTapRecognizer = UITapGestureRecognizer(target: self, action: "scrollViewDoubleTapped:")
        doubleTapRecognizer.numberOfTapsRequired = 2
        doubleTapRecognizer.numberOfTouchesRequired = 1
        self.scrollView.addGestureRecognizer(doubleTapRecognizer)

        let scrollViewFrame = self.scrollView.frame
        let scaleWidth = scrollViewFrame.size.width / self.scrollView.contentSize.width
        let scaleHeight = scrollViewFrame.size.height / self.scrollView.contentSize.height
        let minScale = min(scaleWidth, scaleHeight)
        self.scrollView.minimumZoomScale = minScale

        var image = UIImage(named: "MapPin")
        var pinIcon = UIImageView(image: image)
        pinIcon.userInteractionEnabled = true
        pinIcon.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "buttonTapped:"))
        let imageSize = image?.size ?? CGSizeZero
        var xPosition : CGFloat = CGFloat(poi.x) - imageSize.width * 0.5
        var yPosition : CGFloat = CGFloat(poi.y) - imageSize.height
        pinIcon.frame = CGRect(origin: CGPoint(x: xPosition, y: yPosition), size: imageSize)
        self.mapImage.addSubview(pinIcon)

        self.view.sendSubviewToBack(self.scrollView)
Sven Mäurer
  • 715
  • 1
  • 9
  • 19

1 Answers1

0

You need to set the number of tap required when setting the UITapGestureRecognizer for tap in the pin

var tap = UITapGestureRecognizer(target: self, action: "buttonTapped:")
tap.numberOfTapsRequired = 1
pinIcon.addGestureRecognizer(tap)

Sorry I didn't see where are you trying to use pinch so I couldn't help you with that

Icaro
  • 14,585
  • 6
  • 60
  • 75