¿Cómo hacer que la image se acerque a la doble tapping?

¡He logrado que mi aplicación amplíe mi image si la presiono dos veces, pero no aumenta el zoom en donde presiono dos veces! ¡Quiero que la image centre la coorderada que hice doble clic!

Mi código:

en el file .h:

- (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer; 

en el file .m:

  UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleDoubleTap:)]; [doubleTap setNumberOfTapsRequinetworking:2]; [self.scroll addGestureRecognizer:doubleTap]; - (void)handleDoubleTap:(UIGestureRecognizer *)gestureRecognizer { if(self.scroll.zoomScale > scroll.minimumZoomScale) [self.scroll setZoomScale:scroll.minimumZoomScale animated:YES]; else [self.scroll setZoomScale:1.6 animated:YES]; } 

¿Qué debería hacer después?

¡Gracias por adelantado!

/ Un noob

aquí hay un fragment de mi antiguo proyecto.
Agregue el UITapGestureRecognizer en algún lugar de su init method:

 UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(doubleTapRecognized:)]; doubleTap.numberOfTapsRequinetworking = 2; [self addGestureRecognizer:doubleTap]; [doubleTap release]; 

Esta descarga se activa al doble toque en alguna parte de tu vista.

 - (void)doubleTapRecognized:(UITapGestureRecognizer*)recognizer { [self zoomToPoint:[recognizer locationInView:content]]; } - (void)zoomToPoint:(CGPoint)location { float zoomScaleBefore = self.zoomScale; if (location.x<=0) location.x = 1; if (location.y<=0) location.y = 1; if (location.x>=content.bounds.size.width) location.x = content.bounds.size.width-1; if (location.y>=content.bounds.size.height) location.y = content.bounds.size.height-1; float percentX = location.x/content.bounds.size.width; float percentY = location.y/content.bounds.size.height; [self setZoomScale:10.0 animated:YES]; float pox = (percentX*self.contentSize.width)-(self.frame.size.width/2); float poy = (percentY*self.contentSize.height)-(self.frame.size.height/2); if (pox<=0) pox = 1; if (poy<=0) poy = 1; [self scrollRectToVisible: CGRectMake(pox, poy, self.frame.size.width, self.frame.size.height) animated:(self.zoomScale == zoomScaleBefore)]; } 

Estás buscando -locationInView: Te dará el punto en la vista especificada donde sucedió el toque. En ese punto puedes ajustar la vista para que ese punto sea el centro.

Versión Swift 3.0 que amplía el doble toque:

 let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(onDoubleTap(gestureRecognizer:))) tapRecognizer.numberOfTapsRequinetworking = 2 view.addGestureRecognizer(tapRecognizer) 

 func onDoubleTap(gestureRecognizer: UITapGestureRecognizer) { let scale = min(scrollView.zoomScale * 2, scrollView.maximumZoomScale) if scale != scrollView.zoomScale { let point = gestureRecognizer.location(in: imageView) let scrollSize = scrollView.frame.size let size = CGSize(width: scrollSize.width / scale, height: scrollSize.height / scale) let origin = CGPoint(x: point.x - size.width / 2, y: point.y - size.height / 2) scrollView.zoom(to:CGRect(origin: origin, size: size), animated: true) print(CGRect(origin: origin, size: size)) } }