Ios 如何在函数中检测手指位置
我想用双击。我已经写了函数doubleTap。如何识别手指的位置Ios 如何在函数中检测手指位置,ios,swift,Ios,Swift,我想用双击。我已经写了函数doubleTap。如何识别手指的位置 override func viewDidLoad() { super.viewDidLoad() let doubleTap = UITapGestureRecognizer(target: self, action: "doubleTap") doubleTap.numberOfTapsRequired = 2 doubleTap.numberOfTouchesRequired = 1
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”,因此您没有正确复制它,或者复制的不是最新版本。现在尝试复制,我将尝试重写您自己的代码,因为我更改了您回调的名称