How do I get the coordinates for finger tapping in UIView?

徘徊边缘 提交于 2019-12-18 05:53:21

问题


How do I get the coordinates for finger tapping in UIView? (I would prefer not to use a big array of buttons)

Thank you


回答1:


There’re two ways to accomplish this. If you’ve already got a subclass of UIView that you’re using, you can just override the -touchesEnded:withEvent: method on that subclass, like this:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *aTouch = [touches anyObject];
    CGPoint point = [aTouch locationInView:self];
    // point.x and point.y have the coordinates of the touch
}

If you’re not already subclassing UIView, though, and the view is owned by a view controller or whatever, then you can use a UITapGestureRecognizer, like this:

// when the view's initially set up (in viewDidLoad, for example)
UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)];
[someView addGestureRecognizer:rec];
[rec release];

// elsewhere
- (void)tapRecognized:(UITapGestureRecognizer *)recognizer
{
    if(recognizer.state == UIGestureRecognizerStateRecognized)
    {
        CGPoint point = [recognizer locationInView:recognizer.view];
        // again, point.x and point.y have the coordinates
    }
}



回答2:


Swift 3 answer

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapAction(_:)))
yourView.addGestureRecognizer(tapGesture)


func tapAction(_ sender: UITapGestureRecognizer) {

      let point = sender.location(in: yourView)


}



回答3:


I assume you mean recognizing gestures (and touches). The best place to start looking for such a broad question is Apple's sample code Touches. It walks through a good amount of information.




回答4:


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView:myView];
    NSLog("%lf %lf", touchPoint.x, touchPoint.y);
}

You need to do something like this. touchesBegan:withEvent: is a method of UIResponder from which UIView and UIViewController both are derived. If you google for this method then you will find several tutorials. MoveMe sample from Apple is a good one.




回答5:


func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
    print("tap working")
    if gestureRecognizer.state == UIGestureRecognizerState.Recognized
    { 
      `print(gestureRecognizer.locationInView(gestureRecognizer.view))`
    }
}


来源:https://stackoverflow.com/questions/6113860/how-do-i-get-the-coordinates-for-finger-tapping-in-uiview

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