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

前端 未结 5 717
-上瘾入骨i
-上瘾入骨i 2020-12-19 05:31

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

Thank you

相关标签:
5条回答
  • 2020-12-19 05:50
    - (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.

    0 讨论(0)
  • 2020-12-19 06:02

    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
        }
    }
    
    0 讨论(0)
  • 2020-12-19 06:02

    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.

    0 讨论(0)
  • 2020-12-19 06:03

    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)
    
    
    }
    
    0 讨论(0)
  • 2020-12-19 06:10
    func handleFrontTap(gestureRecognizer: UITapGestureRecognizer) {
        print("tap working")
        if gestureRecognizer.state == UIGestureRecognizerState.Recognized
        { 
          `print(gestureRecognizer.locationInView(gestureRecognizer.view))`
        }
    }
    
    0 讨论(0)
提交回复
热议问题