el objective C habilita UIScrollView scroll mientras UIGestureRecognizerStateChanged

-(void) detectTouch: (UIPanGestureRecognizer *) event para UIScrollView y detecté el ángulo en el cual el usuario mueve su dedo. Mi tarea es desplazarme horizontalmente por UIScrollView cuando el usuario mueve el dedo entre 0 y 30 grados (solo para asegurarme de que está dibujando una línea recta horizontal), de lo contrario, debo desactivar el desplazamiento UIScrollView .

Estoy detectando el ángulo dibujando un triángulo usando el punto de inicio táctil y el punto final.

Problema: UIScrollView desplazamiento UIScrollView cuando el ángulo es <30 grados, pero esto no funciona por primera vez. Aunque scrollEnabled = YES desplazamiento usando scrollEnabled = YES , solo funciona cuando el usuario está parado tocando la pantalla (tomando el dedo de la pantalla).

El siguiente código que solía

 - (void)viewDidLoad { [super viewDidLoad]; [self PanGesture:self.view callBack:@selector(detectTouch:) delegate:self]; incrementer = 0; } -(void) detectTouch: (UIPanGestureRecognizer *) event{ // Calculating point A on gesture starts if(event.state == UIGestureRecognizerStateBegan){ pointA.x = fabs([event translationInView:event.view].x); pointA.y = fabs([event translationInView:event.view].y); NSLog(@"A: %f, %f", pointA.x, pointA.y); } incrementer += 1; // Start calculating Point B, Point C on calling this function 3 times if(incrementer >= 3){ // Calculating point C pointC.x = fabs([event translationInView:event.view].x); pointC.y = fabs([event translationInView:event.view].y); NSLog(@"C: %f, %f", pointC.x, pointC.y); // calculate pointB using A, C pointB.x = fabs(pointC.x); pointB.y = fabs(pointA.y); NSLog(@"B: %f, %f", pointB.x, pointB.y); float X = pointB.x - pointA.x; float Y = pointC.y - pointB.y; float angle = (atan(fabs(Y) / fabs(X)) * 180 / M_PI); if(angle > 30){ // This disable is not working on while user is moving the finger self.myScrollView.scrollEnabled = NO; NSLog(@"UIScroll Disabled"); }else{ // This enable is not working on while user is moving the finger self.myScrollView.scrollEnabled = YES; NSLog(@"UIScroll Enabled"); } incrementer = 0; } } 

¿Cómo puedo habilitar el scroll UIScrollView mientras el usuario mueve el toque?

Como UIScrollView parece aceptar el desplazamiento solo con un toque nuevo después de configurar .scrollEnabled en YES, haría lo siguiente:

  • establezca .scrollEnabled en NO
  • Seguimiento del tacto (por ejemplo, con toques movidos: 🙂
  • Compruebe si se cumple con 30 grados.
  • usa el movimiento para ajustar UIScrollView.contentOffset