繁体   English   中英

Identificationr.location(in:ogniser.view)快速返回零点

[英]recognizer.location(in: recognizer.view) returns point zero in swift

我在Swift中使用UIPanGestureRecognizer遇到了一个奇怪的情况。 我有一个处理平移手势的函数,并在UIGestureRecognizerDelegate中指定“ false”,以便没有其他手势干扰平移。

这是有问题的情况:

  1. 用户用一根手指触摸并开始平移
  2. 用户将第二根手指放在屏幕上-第二根手指将被忽略
  3. 当第二根手指仍在触摸时,用户抬起第一根手指-这时,我的处理程序被用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM