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");
}
}
}