Comment obtenir UITouch emplacement de UIGestureRecognizer
Je veux obtenir le UITouch emplacement de mon robinet de UIGestureRecognizer, mais je ne peux pas comprendre comment partir à la recherche à la fois la documentation et d'autres questions. Pouvez un de vous me guider?
- (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];
}
CODE FIXE ICI - CELA RÉSOUT AUSSI INVERSÉ L'AXE Y
CGPoint touchLocation = [[CCDirector sharedDirector] convertToGL:[self convertToNodeSpace:[tapRecognizer locationInView:[[CCDirector sharedDirector] openGLView]]]];
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
locationInView:
méthode sur UIGestureRecognizer. Si vous passer néant pour la vue, cette méthode renvoie l'emplacement de la touche dans la fenêtre.Il est également utile de déléguer méthode
gestureRecognizer:shouldReceiveTouch:
. Assurez-vous de mettre en œuvre et de l'ensemble de votre robinet geste du délégué de soi.De conserver une référence à la geste de reconnaissance.
Initiailze le geste de reconnaissance
Écouter délégué méthodes.
CGPoint touchLocation = [_tileMap convertTouchToNodeSpace:locationOfTap];
Où convertTouchToNodeSpace convertit un UITouch.. ce code Peut être utilisé de cette façon?convertTouchToNodeSpace:
méthode pour prendre en CGPoint?- (CGPoint)convertTouchToNodeSpace:(UITouch *)touch { CGPoint point = [touch locationInView: [touch view]]; point = [[CCDirector sharedDirector] convertToGL: point]; return [self convertToNodeSpace:point]; }
Il n'est pas content quand je l'ai changer pour CGPointself.tapRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)] autorelease]; [_tapRecognizer requireGestureRecognizerToFail:_doubleTapRecognizer]; [[[CCDirector sharedDirector] openGLView] addGestureRecognizer:_tapRecognizer];
CGPoint location = [tapRecognizer locationInView:[[CCDirector sharedDirector] openGLView]];
directement à moveToward, et que le problème est ailleurs.. :s acceptera votre réponse de toute façon, comme il m'a aidé.Dans Swift:
Essayez ceci:
Cela permet d'imprimer les coordonnées de chaque tapez dans votre console.
Apple Docs dire
De sorte que vous ne devriez pas accès.