[英]MyObject *objectOne = (MyObject *)recognizer.view;
[英]recognizer.location(in: recognizer.view) returns point zero in swift
我在Swift中使用UIPanGestureRecognizer遇到了一个奇怪的情况。 我有一个处理平移手势的函数,并在UIGestureRecognizerDelegate中指定“ false”,以便没有其他手势干扰平移。
这是有问题的情况:
recognizer.state == .ended
。 问题是此刻的位置(我通过调用recognizer.location(in: recognizer.view)
(0,0)
recognizer.location(in: recognizer.view)
,返回点(0,0)
我使用错误的方法来表达观点吗? 看来,由于第二根手指完全被忽略了,所以第一根手指应像普通平移一样工作,当state == end时,我将获得位置。
我刚刚进行了测试-识别器结束后,位置不再可用(使用以下命令)
recognizer.location(ofTouch: 0, in: recognizer.view)
我将添加一个变量,该变量跟踪.began和.changed中的最后一个已知点(我从那些数据中获取数据),然后在.end中使用该数据
编辑:通过子类获取数据
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))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.