是否可以获得触摸的x和y坐标?如果有的话,请提供一个非常简单的例子,坐标只记录在控制台上。是否可以获取触摸的x和y坐标?
回答
使用的touchesBegan事件
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchPoint = [touch locationInView:self.view];
NSLog(@"Touch x : %f y : %f", touchPoint.x, touchPoint.y);
}
触摸启动时触发此事件。
使用手势
注册您的UITapGestureRecognizer在viewDidLoad:
方法
- (void)viewDidLoad {
[super viewDidLoad];
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognizer:)];
[self.view setUserInteractionEnabled:YES];
[self.view addGestureRecognizer:tapGesture];
}
建立tapGestureRecognizer功能
// Tap GestureRecognizer function
- (void)tapGestureRecognizer:(UIGestureRecognizer *)recognizer {
CGPoint tappedPoint = [recognizer locationInView:self.view];
CGFloat xCoordinate = tappedPoint.x;
CGFloat yCoordinate = tappedPoint.y;
NSLog(@"Touch Using UITapGestureRecognizer x : %f y : %f", xCoordinate, yCoordinate);
}
从你给出的第一种方法开始,使用触摸开始,我怎样才能使x和y位置的全局变量? – AwesomeTN
在你的.h文件中创建一个CGPoint变量,并在上面的方法中指定它 – icodebuster
触动开始很好,但我无法触摸已着手工作,几乎不是完全一样的东西? – AwesomeTN
这里是一个非常简单的例子(将它放在您的视图控制器内):
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [touches anyObject];
CGPoint currentPoint = [touch locationInView:self.view];
NSLog(@"%@", NSStringFromCGPoint(currentPoint));
}
这会触发每次移动触摸屏。您也可以使用在触摸开始时触发的touchesBegan:withEvent:
和在触摸结束时触发的touchesEnded:withEvent:
(即手指抬起)。
您也可以使用UIGestureRecognizer
来做到这一点,这在很多情况下更实用。
我c/p这到我的视图控制器,我得到了与NSLog的错误,但它通过将字符串更改为NSSringFromCGPoint解决。但我仍然没有收到控制台中的任何东西,我错过了什么?感谢您的帮助 – AwesomeTN
您不应该添加任何额外的代码来完成此项工作。其他东西是否可以捕获触摸事件(例如,是否有像按钮这样的子视图可以阻止触摸进入viewController的视图)? – Ander
本质上,添加到viewController的'self.view'中的任何视图都没有'.userInteractionEnabled = NO'会捕获触摸并阻止它进入上面答案中给出的方法。 – Ander
首先,您需要将手势识别器添加到所需的视图。
UITapGestureRecognizer *myTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapRecognizer:)];
[self.myView setUserInteractionEnabled:YES];
[self.myView addGestureRecognizer:myTap];
然后在手势识别方法您对locationInView:
- (void)myTapRecognizer:(UIGestureRecognizer *)recognizer
{
CGPoint tappedPoint = [recognizer locationInView:self.myView];
CGFloat xCoordinate = tappedPoint.x;
CGFloat yCoordinate = tappedPoint.y;
}
一个电话你可能想看看苹果的UIGestureRecognizer Class Reference
- 1. 获取触摸输入的x和y坐标(Android studio,Java)
- 2. 是否可以更改特定x和y坐标的颜色?
- 3. 如何使用Android中的Service类获取触摸事件(X和Y坐标)?
- 4. 获取UIButton的x和y坐标
- 5. 获取HTML5中的x和y坐标
- 6. Android:获取TextView的X和Y坐标?
- 7. 如何获得屏幕触摸的x,y坐标?
- 8. Java获取x和y坐标
- 9. 使用TapGestureRecognizer获取坐标x和y
- 10. 获取X和Y坐标onClick
- 11. 获取X和Y坐标视图
- 12. Windows 8获取绝对X Y触摸屏的坐标(不管窗口)
- 13. iPhone MapKit是否可以映射一系列触摸的坐标?
- 14. Android:获取视图的x,y坐标
- 15. 如何获取JButton的(x,y)坐标
- 16. 是否可以从设置X,Y坐标
- 17. 获取触摸坐标(以0-480和0-320的形式)
- 18. 是否有可能在Windows中获得浮动触摸坐标?
- 19. 获取奇怪的触摸坐标
- 20. iOS /移动设备的X/Y触摸坐标
- 21. 从CvPoint获取X Y坐标
- 22. 如何获取x,y坐标
- 23. 在ImageView touch上获取X/Y坐标
- 24. 从列表中获取(x,y)坐标
- 25. 获取X Y坐标w.r.t图像
- 26. 检查屏幕坐标(x,y)触摸Matrix4x4(3d对象)
- 27. Android(x,y)连续触摸(拖动)坐标
- 28. 鼠标/触摸坐标在cocos2d-x
- 29. 获取坐标,连续两次触摸
- 30. 捏缩放 - 获取触摸坐标
你看了UITouch类参考? – rdelmar