Instagram如何在向后滑动时处理滑动手势距离(弹出导航过程)。例如,如果不是长距离,则可以放弃向后滑动,然后再次返回旧视图。
我想知道这个,如果有人解释那会很棒。
答案 0 :(得分:0)
手势识别器本身没有检测到距离。
相反,您将使用手势识别器移动视图,然后,当手势结束时,确定视图是否已超出某一点,并采取相应的行动。
因此,在一个简单的例子中,您可以测试视图是否移动了超过屏幕的一半:
如果是这样,您继续移动它并且segue到另一个视图;如果没有,你设置一个动画,将视图带回到它的起点。
希望有所帮助。
您可能需要查看:
https://www.raywenderlich.com/62435/make-swipeable-table-view-cell-actions-without-going-nuts-scroll-views更深入地解释了这种方法。
答案 1 :(得分:0)
使用UIGestureRecognizer绝对没问题。您可能需要查看Apple文档:https://developer.apple.com/reference/uikit/uigesturerecognizer/1619996-touchesmoved 此方法返回UITouch,再次从Apple文档中,您可以看到此UITouch表示手指在屏幕上针对特定事件的位置,大小,移动和力。
答案 2 :(得分:0)
我正在使用此函数计算两点之间的距离:
//Distance
extension CGPoint {
func distanceCount(_ point: CGPoint) -> CGFloat {
return abs(CGFloat(hypotf(Float(point.x - x), Float(point.y - y))))
}
}
用法:
let myDistance = p1.distanceCount(p2) //p1 is firstTouch and p2 is when user stops touching.
然后你可以做类似
的事情 if distance < SomeValue {
//Some code
}
希望它会对你有所帮助。