ios - UIScrollView detectar pinch zoom end
uiscrollviewdelegate (3)
Lo hice con UIPinchGestureRecognizer .
-(void)viewDidLoad{
UIPinchGestureRecognizer *gestureRecognizer =
[[[UIPinchGestureRecognizer alloc] initWithTarget:self
action:@selector(pinched:)]
autorelease];
gestureRecognizer.delegate=self;
[self.scrollView addGestureRecognizer:gestureRecognizer];
//your code
}
-(void)pinched:(UIPinchGestureRecognizer*)gestureRecognizer{
if(gestureRecognizer.state==UIGestureRecognizerStateEnded){
//pinch ended
NSLog(@"scale: %f",scrollView.zoomScale);
}
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:
(UIGestureRecognizer *)otherGestureRecognizer{
return YES;
}
Estoy tratando de recibir una notificación cuando UIScrollView se aleja más de su límite de zoom mínimo y está a punto de animar, pero me resulta muy difícil. ¿Hay alguna manera de hacerlo con los métodos de delegate solo o tengo que anular UIScrollView''s manejo táctil UIScrollView''s ?
Puede usar el método delegate scrollViewDidZoom de UIScrollView para detectar el momento en que se va a animar. Verá que scrollView.zoomScale cae debajo de scrollView.minimumZoomScale mientras se pellizca la vista. Luego, tan pronto como el usuario suelta los dedos, se llamará una vez más a scrollView.zoomScale == scrollView.minimumZoomScale con scrollView.zoomScale == scrollView.minimumZoomScale , pero scrollView.zooming == NO .
Capturar este momento está bien y todo, pero intentar hacer cualquier cosa para adelantarse a la animación bounce-back-to-minimumZoomScale parece tener efectos secundarios realmente extraños para mí. :(
Use scrollViewDidZoom: y compruebe si scrollView.zoomBouncing == YES . Luego use zoomScale para determinar en qué dirección está rebotando la vista.
- (void)scrollViewDidZoom:(UIScrollView *)scrollView {
if (scrollView.zoomBouncing) {
if (scrollView.zoomScale == scrollView.maximumZoomScale) {
NSLog(@"Bouncing back from maximum zoom");
}
else
if (scrollView.zoomScale == scrollView.minimumZoomScale) {
NSLog(@"Bouncing back from minimum zoom");
}
}
}