How to get UITouch location from UIGestureRecognizer
cocos2d-iphone, ios, objective-c, uigesturerecognizer, xcode
Solution
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;
}
Problem
I want to get the UITouch location of my tap from UIGestureRecognizer, but I can not figure out how to from looking at both the documentation and other SO questions. Can one of you guide me? ``` - (void)handleTap:(UITapGestureRecognizer *)tapRecognizer { CCLOG(@"Single tap"); UITouch *locationOfTap = tapRecognizer; //This doesn't work CGPoint touchLocation = [_tileMap convertTouchToNodeSpace:locationOfTap]; //convertTouchToNodeSpace requires UITouch [_cat moveToward:touchLocation]; } ``` FIXED CODE HERE - THIS ALSO FIXES INVERTED Y AXIS ``` CGPoint touchLocation = [[CCDirector sharedDirector] convertToGL:[self convertToNodeSpace:[tapRecognizer locationInView:[[CCDirector sharedDirector] openGLView]]]]; ```