I have a UITapGestureRecognizer
and a UIPanGestureRecognizer
on a UIView
with a SKScene
on it. The pan gesture recogniser moves a SKNode left to right, and I want the Tap gesture recogniser to detect a child of the SKNode that pans. Panning works fine, but I'm having trouble detecting taps - the Tap Gesture fires the relevant method, but I'm not sure how to convert the coordinates from the view to the scene to the node to detect if the tap is in one of the children nodes.
UIView (with gestures) → SKScene → Panning node → Children of panning node
How do I check a whether a tap gesture's touch coordinate is any given SKNode?
-(void)tapAction:(UITapGestureRecognizer*)sender{
if (sender.state == UIGestureRecognizerStateEnded)
{
// handling code
CGPoint touchLocation = [sender locationOfTouch:0 inView:sender.view];
NSLog(@"TAP %@", NSStringFromCGPoint(touchLocation)
);
for (SKLabelNode *node in _containerNode.children) {
if ([node containsPoint:[node convertPoint:touchLocation fromNode:self.parent]]) {
//This is where I want the tap to be detected.
}
CGPoint checkPoint = [node convertPoint:touchLocation fromNode:self.scene];
NSLog(@"CheckPoint %@", NSStringFromCGPoint(checkPoint)
);
//NSLog(@"iterating nodes");
if ([node containsPoint:checkPoint]) {
NSLog(@"touch match %@", node);
}
}
}
}