Vladislav
Vladislav

Reputation: 273

How to detect finger location in function

I want to use double click. I have written function doubleTap. How to recognize location of finger?

override func viewDidLoad() 
{
    super.viewDidLoad()
    let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap")
    doubleTap.numberOfTapsRequired = 2
    doubleTap.numberOfTouchesRequired = 1
    view.addGestureRecognizer(doubleTap)
}
func doubleTap()
{

}

Upvotes: 1

Views: 111

Answers (2)

Yitzchak
Yitzchak

Reputation: 3416

You can get the gesture recognizer as a parameter

override func viewDidLoad()
{
    super.viewDidLoad()
    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(doubleTapFunc))
    doubleTap.numberOfTapsRequired = 2
    doubleTap.numberOfTouchesRequired = 1
    view.addGestureRecognizer(doubleTap)
}

func doubleTapFunc(_ sender: UITapGestureRecognizer)
{
    // Use 'sender' here to get the location
    if sender.state == .ended {
        // handling code
        let location = sender.location(ofTouch: 0, in: self.view!)
    }
}

Upvotes: 0

David Pasztor
David Pasztor

Reputation: 54775

You can use location(ofTouch:in:) to get the location of the touch. However, you need access to the gesture recognizer from inside the function where you want to access the location, so you should declare doubleTap as an instance property of your class.

class YourViewController: UIViewController {
    let doubleTap = UITapGestureRecognizer(target: self, action: #selector(YourViewController.doubleTap))

    override func viewDidLoad(){
        super.viewDidLoad()
        doubleTap.numberOfTapsRequired = 2
        doubleTap.numberOfTouchesRequired = 1
        view.addGestureRecognizer(doubleTap)
    }
    func doubleTap(){
        let touchLocation = doubleTap.location(ofTouch: numberOfTouches-1,in: nil)
    }
}

Change the input parameters to the function if you want to change whether you need to get the first or last touch's location or if you want to get the location relative to a subview.

Upvotes: 1

Related Questions