Ios 如何在函数中检测手指位置

Ios 如何在函数中检测手指位置,ios,swift,Ios,Swift,我想用双击。我已经写了函数doubleTap。如何识别手指的位置 override func viewDidLoad() { super.viewDidLoad() let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap") doubleTap.numberOfTapsRequired = 2 doubleTap.numberOfTouchesRequired = 1

我想用双击。我已经写了函数doubleTap。如何识别手指的位置

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

}

您可以将手势识别器作为参数

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!)
    }
}
您可以使用
位置(ofTouch:in:)
获取触摸的位置。但是,您需要从要访问位置的函数内部访问手势识别器,因此您应该将
doubleTap
声明为类的实例属性

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

如果您想要更改是否需要获取第一次或最后一次触摸的位置,或者想要获取相对于子视图的位置,请更改该功能的输入参数。

您还可以将
uigesturecognizer
作为
双击功能的参数。你应该使用选择器的语法。@Sulthan更新了我的答案,我刚刚复制了OP的代码,但是你是对的,我应该更正选择器的语法。至于将识别器作为参数发送,这也是另一种可能性。使用
#选择器
语法。这将发现代码中当前的无效选择器的错误:)我无法编译代码。“#selector”的参数不能引用变量“doubleTap”,因此您没有正确复制它,或者复制的不是最新版本。现在尝试复制,我将尝试重写您自己的代码,因为我更改了您回调的名称