我对 Swift 中的 UIPanGestureRecognizer 有一个奇怪的案例。 我有一个处理平移手势的函数,并在 UIGestureRecognizerDelegate 中指定“false”,这样没有其他手势会干扰平移。
这是有问题的案例:
recognizer.state == .ended
。问题是此时的位置(我通过调用 recognizer.location(in:recognizer.view)
返回点 (0,0)
<我是否使用了错误的方法来理解这一点?似乎由于第二根手指被完全忽略了,第一根手指应该表现得像一个普通的平移,当状态==结束时我会得到位置。
我刚刚对其进行了测试 - 识别器结束时位置不再可用(使用以下方法)
recognizer.location(ofTouch: 0, in: recognizer.view)
我会添加一个变量来跟踪 .began 和 .changed 中的最后一个已知点(我在其中获取数据)然后在 .ended 中使用该数据
编辑:通过子类化获取数据
class pgr: UIPanGestureRecognizer {
var myTouch:Set<UITouch>!
override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent) {
myTouch = touches
super.touchesEnded(touches, with: event)
}
}
然后回到你的实现中
if sender.state == .ended {
print(sender.myTouch.first?.location(in: sender.view))
}
关于ios - 识别器位置(在 : recognizer. View 中)快速返回零点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45441545/
欢迎光临 OGeek|极客世界-中国程序员成长平台 (https://ogeek.cn/) | Powered by Discuz! X3.4 |