我想要实现滚动视图,像使用pan手势动画。我已经实现了滚动视图的几乎所有属性,在pan手势操作方法下使用了以下代码:
if recognizer.state == UIGestureRecognizerState.changed{
recognizer.view!.center = CGPoint(x: recognizer.view!.center.x, y: recognizer.view!.center.y + translation.y )
recognizer.setTranslation(CGPoint.zero, in: self.view)
}
if recognizer.state == UIGestureRecognizerState.ended {
// 1
let velocity = recognizer.velocity(in: self.view)
let magnitude = sqrt((velocity.x * velocity.x) + (velocity.y * velocity.y))
let slideMultiplier = magnitude / 200
print("magnitude: \(magnitude), slideMultiplier: \(slideMultiplier)")
// 2
let slideFactor = 0.1 * slideMultiplier //Increase for more of a slide
// 3
var finalPoint = CGPoint(x:recognizer.view!.center.x ,
y:recognizer.view!.center.y + (velocity.y * slideFactor))
// 4
//finalPoint.x = min(max(finalPoint.x, 0), self.view.bounds.size.width)
//finalPoint.y = min(max(finalPoint.y, 0), self.view.bounds.size.height)
// 5
UIView.animate(withDuration: Double(slideFactor),
delay: 0,
// 6
options: UIViewAnimationOptions.curveEaseOut,
animations: {recognizer.view!.center = finalPoint },
completion: nil)
}我的问题是:,当pan手势结束时,我要查看动画。在动画结束之前,我的触摸不会被uiview接收到。
我的意思是,只有当动画代码完成时,才会出现另一个pan手势。
在动画结束之前,我的潘手势能识别触摸吗?
有什么主意吗??
发布于 2017-06-18 19:38:20
您应该在动画中使用allowUserInteraction选项。
UIView.animate(withDuration: Double(slideFactor), delay: 0.0, options: [.curveEaseOut, .allowUserInteraction], animations: {
recognizer.view?.center = finalPoint
}, completion: nil)https://stackoverflow.com/questions/44618208
复制相似问题