当我点按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中的答案。