控制contentOffset的scrollView mid动画

时间:2014-12-22 14:46:56

标签: ios objective-c swift uiscrollview

当我点按scrollView时,它会激活UITapGestureRecognizer,动画contentOffset约2秒钟。我怎么能让用户中断动画并在拖动时再次完全控制scrollView?现在,用户必须等到动画结束才能再次开始与scrollView进行交互。

注意:self是指scrollView

点击设置:

let singleTap = UITapGestureRecognizer(target: self, action: "subtleBounce:")
        singleTap.cancelsTouchesInView = false
        self.addGestureRecognizer(singleTap)

所以当用户点击时:

func subtleBounce(gesture : UITapGestureRecognizer) {
        let originalFrame = self.frame

        UIView.animateWithDuration(0.1, delay: 0.0, usingSpringWithDamping: 1.5, initialSpringVelocity: 1.5, options: UIViewAnimationOptions.CurveLinear, animations: {
            self.contentOffset.y -= 10.0

            }, completion: {
                Void in
                UIView.animateWithDuration(0.6, delay: 0.0, usingSpringWithDamping: 0.1, initialSpringVelocity: 3.0, options: UIViewAnimationOptions.CurveLinear, animations: { 
               self.contentOffset.y += 10.0 }, completion: { Void in

                })
        })
    }

所以上面的代码按预期工作。

以下是我试图停止动画并再次让用户控制scrollView:

let drag = UISwipeGestureRecognizer(target: self, action: "stopScrollAnimation:")
        drag.cancelsTouchesInView = false
        self.addGestureRecognizer(drag)

和其他地方:

func stopScrollAnimation(gesture : UISwipeGestureRecognizer) {
        self.layer.removeAllAnimations()
        self.setContentOffset(CGPoint(x: 0.0, y: 0.0), animated: false)
    }

然而,这不能按预期工作。动画仍然控制scrollView,用户无法与之交互。

如果您想了解我的意思,请查看iOS7 / 8锁屏。点击屏幕后,它也会启动动画。但是,用户可以控制scrollView mid动画。

编辑:接受swift或obj-c中的答案。

1 个答案:

答案 0 :(得分:2)

AllowUserInteraction添加到动画选项中。