recognizer ios cocoa-touch uigesturerecognizer

ios - tap gesture recognizer swift 4



UIPanGestureRecognizer en UITableViewCell anula el reconocedor de gesto de vista de desplazamiento de UITableView (4)

¿Has intentado configurar la propiedad de delegado de pannings ?

panning.delegate = /* class name with the delegate method in it */;

También necesitarás conformar esa clase con UIGestureRecognizerDelegate.

He subclasificado UITableViewCell y en esa clase aplico un reconocedor de gestos de Pan:

UIPanGestureRecognizer *panning = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(handlePanning:)]; panning.minimumNumberOfTouches = 1; panning.maximumNumberOfTouches = 1; [self.contentView addGestureRecognizer:panning]; [panning release];

Luego implemento el protocolo de delegado que se supone que permite gestos simultáneos en la vista de la tabla:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; }

Luego handlePanning un registro dentro del método handlePanning solo para ver cuándo se detecta:

- (void)handlePanning:(UIPanGestureRecognizer *)sender { NSLog(@"PAN"); }

Mi problema es que no puedo desplazarme verticalmente a través de la lista de celdas en la vista de tabla y que se llama handlePanning sin importar en qué dirección lo muevo.

Lo que quiero es que solo se handlePanning a handlePanning cuando solo hay panoramización horizontal y no vertical. Apreciaría alguna orientación.


¿Has intentado establecer la propiedad de rebotes en NO?


Agregue el reconocedor de gestos en tableview. A partir de eso, puedes obtener el objeto celular. Desde allí podrás manejar la funcionalidad de la celda. Para cada gesto, habrá un comienzo, un cambio, un estado final. Por lo tanto, almacenar la posición inicial.

CGPoint beginLocation = [gesture locationInView:tblView]; // touch begin state. CGPoint endLocation = [gesture locationInView:tblView]; // touch end state.

Usando este punto, puedes obtener el IndexPath

NSIndexPath *indexPath = [tblView indexPathForRowAtPoint:beginPoint];

Desde esta ruta de acceso, puede acceder a la celda.

UITableViewCell *cell = [tableview cellForRowAtIndexPath : indexPath];

Usando este objeto Cell, puedes manejarlo.