/ / Detecta la ubicación táctil en UIImage que está en una vista de desplazamiento - ios, swift, uiscrollview, uiimageview, uitapgesturerecognizer

Detecta la ubicación táctil en UIImage que está en una vista de desplazamiento: ios, swift, uiscrollview, uiimageview, uitapgesturerecognizer

Tengo la siguiente jerarquía de interfaz de usuario:

UIView -> UIScrollView -> UIImageView

Era necesario porque quería hacer zoomimagen dentro y fuera. Hasta ahora todo bien y todo funciona. Ahora quería detectar la ubicación táctil de la imagen. Ya he leído mucho y funciona si solo tengo un UIImage en una UIView. Desafortunadamente, lo necesito para la primera jerarquía descrita.

class TestController: UIViewController, UIScrollViewDelegate {

@IBOutlet weak var scrollView: UIScrollView!
@IBOutlet weak var myImageView: UIImageView!
@IBOutlet var myGestureRecognizer: UITapGestureRecognizer!

override func viewDidLoad() {
super.viewDidLoad()

self.myImageView.addGestureRecognizer(myGestureRecognizer)
myImageView.userInteractionEnabled = true

}

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
let touch = touches.anyObject()! as UITouch
let location = touch.locationInView(self.myImageView)
println(location)
}

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? {
return self.myImageView
}

.....
}

He intentado agregar "myGestureRecognizer" a UIView y también a UIImageView e incluso a los 3 (UIView, UIScrollView, UIImageView) juntos. Simplemente no funciona para mí y no sé qué hacer.

¿Cómo puedo detectar la ubicación de los toques (solo un toque) en un UIImageView, que se coloca en un UIScrollView?

¡Gracias por adelantado!

Respuestas

9 para la respuesta № 1
func didTapImage(gesture: UIGestureRecognizer) {
let point = gesture.locationInView(gesture.view)
}


override func viewDidLoad() {
super.viewDidLoad()

let imgView = UIImageView()
imgView.userInteractionEnabled = true // IMPORTANT
imgView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: "didTapImage:"))
}

En UIImageView userInteractionEnabled está predeterminado en falso y no registrará toques.