Is it possible to get the x and y coordinates of a touch?

倖福魔咒の 提交于 2020-01-01 05:30:09

问题


is it possible to get the x and y coordinates of a touch? If so could someone please provide a very simple example where the coordinates are just logged to the console.


回答1:


Using touchesBegan Event

- (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);
}

This event is triggered when touch starts.

Using Gesture

Register your UITapGestureRecognizer in viewDidLoad: Method

- (void)viewDidLoad {
    [super viewDidLoad];
    UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapGestureRecognizer:)];
    [self.view setUserInteractionEnabled:YES];
    [self.view addGestureRecognizer:tapGesture];
}

Setting up the tapGestureRecognizer function

// 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);
}

Sample Project




回答2:


First you need to add a gesture recognizer to the view you want.

UITapGestureRecognizer *myTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(myTapRecognizer:)];
[self.myView setUserInteractionEnabled:YES];
[self.myView addGestureRecognizer:myTap];

Then in the gesture recognizer method you make a call to locationInView:

- (void)myTapRecognizer:(UIGestureRecognizer *)recognizer
{
    CGPoint tappedPoint = [recognizer locationInView:self.myView];
    CGFloat xCoordinate = tappedPoint.x;
    CGFloat yCoordinate = tappedPoint.y;
}

You may want to take a look at apple's UIGestureRecognizer Class Reference




回答3:


Here's a very basic example (place it inside your view controller):

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint currentPoint = [touch locationInView:self.view];
    NSLog(@"%@", NSStringFromCGPoint(currentPoint));
}

This triggers every time the touch moves. You can also use touchesBegan:withEvent: which triggers when a touch starts, and touchesEnded:withEvent: which triggers when a touch ends (i.e. a finger is lifted).

You can also do this using a UIGestureRecognizer, which in many cases is more practical.



来源:https://stackoverflow.com/questions/17714290/is-it-possible-to-get-the-x-and-y-coordinates-of-a-touch

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!