How to get UITouch location from UIGestureRecognizer How to get UITouch location from UIGestureRecognizer xcode xcode

How to get UITouch location from UIGestureRecognizer


You can use the locationInView: method on UIGestureRecognizer. If you pass nil for the view, this method will return the location of the touch in the window.

- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer{    CGPoint touchPoint = [tapRecognizer locationInView: _tileMap]}

There is also a helpful delegate method gestureRecognizer:shouldReceiveTouch:. Just make sure to implement and set your tap gesture's delegate to self.

Keep a reference to the gesture recognizer.

@property UITapGestureRecognizer *theTapRecognizer;

Initiailze the gesture recognizer

_theTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(someMethod:)];_theTapRecognizer.delegate = self;[someView addGestureRecognizer: _theTapRecognizer];

Listen for delegate methods.

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{    CGPoint touchLocation = [_tileMap convertTouchToNodeSpace: touch];    // use your CGPoint    return YES;}


In Swift:

func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {   print("tap working")   if gestureRecognizer.state == UIGestureRecognizerState.Recognized   {       print(gestureRecognizer.locationInView(gestureRecognizer.view))   }}


Try this:

-(void) didMoveToView:(SKView *)view{    oneFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(oneTapDetected:)];    oneFingerTap.numberOfTapsRequired=1;    oneFingerTap.numberOfTouchesRequired=1;    [view addGestureRecognizer:oneFingerTap];}-(void)oneTapDetected:(UITapGestureRecognizer *)recognizer{    NSLog(@"one tap detec");    tapPositionOneFingerTap = [oneFingerTap locationInView:self.view];    NSLog(@"%f, %f",tapPositionOneFingerTap.x,tapPositionOneFingerTap.y);}

This prints the coordinates of each tap in your console.