停止UIPanGestureRecognizer移动超过阈值

时间:2018-05-16 20:19:07

标签: swift uigesturerecognizer uipangesturerecognizer translate-animation

我的一个观点是我的观点。手势不会让它向后移动并阻止它移过目标的中心。

如果用户拖过目标到达绿色侧,它将保持在中心位置,但一旦他们开始向按钮方向拖动,它就会退回。即使用户手指未超过XButton视图。

这里的代码示例:

let xGestureDrag = UIPanGestureRecognizer(target: self, action: #selector(AdViewPageVC.xButtonWasDragged(_:)))

@objc func xButtonWasDragged(_ sender: UIPanGestureRecognizer) {

    if sender.state == UIGestureRecognizerState.began || sender.state == UIGestureRecognizerState.changed {
        self.view.bringSubview(toFront: xButton)
        let translation = sender.translation(in: self.view)
        print(translation.x)
        xButton.center = CGPoint(x: xButton.center.x + translation.x, y: xButton.center.y)
        if xButton.center.x < startingPointxBtn {
            xButton.center.x = startingPointxBtn
        } else if xButton.center.x > largeCircle.center.x {
            xButton.center.x = largeCircle.center.x
        }
        sender.setTranslation(CGPoint.zero, in: self.view)
    } else if sender.state == UIGestureRecognizerState.ended {
        if largeCircle.center.x - xButton.center.x <= 35.0 {
            xButton.center = largeCircle.center
        } else {
            xButton.center.x = startingPointxBtn
        }
    }

}

视频示例:

enter image description here

1 个答案:

答案 0 :(得分:0)

我已经实现了答案。对于任何寻找这样行为的人,你可以找到我的解决方案。

当我们滑动视图时,我使用变量来保存我们翻译的距离计数器。

如果进行检查,您可以使用此功能进行操作,并获得所需的确切行为。

新行为的视频示例(拖动过去的目标,后面的开始,捕捉到开始,以及对齐目标):

enter image description here

以下代码:

<QTY>