iPhone – UIScrollView … detectando las coorderadas de un toque

Posible duplicado:
UIScrollview recibe events táctiles

¿Es posible detectar dónde se tocó el dedo en una UIScrollView?

Quiero decir, supongamos que el usuario usa su dedo de esta manera: se toca y se desplaza, se levanta el dedo y otra vez, se toca y se desplaza, etc. ¿Es posible saber el CGPoint donde ocurrieron los toques en relación con el self.view the scroller is ¿en? El desplazador ocupa toda la vista.

Gracias.

Puedes hacerlo con reconocedores de gestos. Para detectar la location del solo toque, utilice UITapGestureRecognizer

 UITapGestureRecognizer *tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAction:)] autorelease]; [myScrollView addGestureRecognizer:tapRecognizer]; - (void)tapAction:(UITapGestureRecognizer*)sender{ CGPoint tapPoint = [sender locationInView:myScrollView]; CGPoint tapPointInView = [myScrollView convertPoint:tapPoint toView:self.view]; } 

Para convertir ese tapPoint a self.view puede usar convertPoint:toView: método en la class UIView

Eche un vistazo a touchesBegan: withEvent: Obtendrá un NSSet de UITouch , y un UITouch contiene un método locationInView: que debe devolver el CGPoint del toque.

Podrías encontrar la location en la vista y agregar el desplazamiento hacia él. Ahora, su próximo problema es que -(void)touchesBegan:touches:event no se llamará al evento porque los events se enviarán a tu vista de desplazamiento. Esto se puede solucionar subclarando su UIScrollView y haciendo que scrollview envíe los events táctiles al siguiente respondedor (su vista).

 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // Position of touch in view UITouch *touch = [[event allTouches] anyObject]; CGPoint touchPoint = [touch locationInView:self.view]; // Scroll view offset CGPoint offset = scrollView.contentOffset; // Result CGPoint scrollViewPoint = CGPointMake(touchPoint.x, touchPoint.y + offset.y); NSLog(@"Touch position in scroll view: %f %f", scrollViewPoint.x, scrollViewPoint.y); }