我想从我的UIGestureRecognizer自来水的UITouch位置,但我不能如何从寻找两者的文档和SO问题弄清楚。 你们中的一个可以指导我?
- (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];
}
固定码-这里还修复倒Y轴
CGPoint touchLocation = [[CCDirector sharedDirector] convertToGL:[self convertToNodeSpace:[tapRecognizer locationInView:[[CCDirector sharedDirector] openGLView]]]];
您可以使用locationInView:
方法上UIGestureRecognizer。 如果传递零的视图,此方法将返回窗口触摸的位置。
- (void)handleTap:(UITapGestureRecognizer *)tapRecognizer
{
CGPoint touchPoint = [tapRecognizer locationInView: _tileMap]
}
还有一个有用的委托方法gestureRecognizer:shouldReceiveTouch:
只要确保落实和你双击手势的委托设置为self。
保持对手势识别的参考。
@property UITapGestureRecognizer *theTapRecognizer;
Initiailze手势识别
_theTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector(someMethod:)];
_theTapRecognizer.delegate = self;
[someView addGestureRecognizer: _theTapRecognizer];
倾听委托方法。
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
CGPoint touchLocation = [_tileMap convertTouchToNodeSpace: touch];
// use your CGPoint
return YES;
}
在斯威夫特:
func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
print("tap working")
if gestureRecognizer.state == UIGestureRecognizerState.Recognized
{
print(gestureRecognizer.locationInView(gestureRecognizer.view))
}
}
试试这个:
-(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);
}
这将打印在控制台每个抽头的坐标。
苹果文件说
UIGestureRecognizer
- (NSUInteger)numberOfTouches
UITouch对象的数目在由接收器维持的私有阵列 。
所以,你不应该访问它们。
使用通过在循环这个方法返回的值,你可以要求使用单独的触摸的位置locationOfTouch:inView:
方法。