Je souhaite obtenir l'emplacement UIT de mon robinet auprès d'UIGestureRecognizer, mais je ne peux pas comprendre comment consulter à la fois la documentation et d'autres SO questions. L'un de vous peut 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 FIXE AUSSI L'AXE Y INVERSÉ
CGPoint touchLocation = [[CCDirector sharedDirector] convertToGL:[self convertToNodeSpace:[tapRecognizer locationInView:[[CCDirector sharedDirector] openGLView]]]];
Vous pouvez utiliser le locationInView:
méthode sur UIGestureRecognizer. Si vous passez nil pour la vue, cette méthode renverra l'emplacement du contact dans la fenêtre.
- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint touchPoint = [tapRecognizer locationInView: _tileMap]
}
Il existe également une méthode de délégation utile gestureRecognizer:shouldReceiveTouch:
. Assurez-vous simplement de mettre en œuvre et de définir le délégué de votre geste de toucher sur soi-même.
Gardez une référence à la reconnaissance de geste.
@property UITapGestureRecognizer *theTapRecognizer;
Initiailze la reconnaissance de geste
_theTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(someMethod:)];
_theTapRecognizer.delegate = self;
[someView addGestureRecognizer: _theTapRecognizer];
Écoutez les méthodes de délégué.
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint touchLocation = [_tileMap convertTouchToNodeSpace: touch];
// use your CGPoint
return YES;
}
En rapide:
func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.Recognized
{
print(gestureRecognizer.locationInView(gestureRecognizer.view))
}
}
Essaye ça:
-(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);
}
Ceci imprime les coordonnées de chaque tap dans votre console.
Apple Docs dire
UIGestureRecognizer
- (NSUInteger)numberOfTouches
Nombre d'objets UITouch dans un tableau privé géré par le destinataire.
Donc, vous ne devriez pas y accéder.
En utilisant la valeur renvoyée par cette méthode dans une boucle, vous pouvez demander l’emplacement des touches individuelles à l’aide de la touche
locationOfTouch:inView:
méthode.