【问题标题】:Restrict angle of swipe to scroll UIScrollView限制滑动角度以滚动 UIScrollView
【发布时间】:2016-01-06 06:43:54
【问题描述】:
我有一个需要可滚动的垂直滚动视图,但我想将左右滑动手势用于其他操作。我有每个滑动方向的行为,但我想限制滚动 UIScrollView 的滑动角度,因此它必须是非常非常垂直的,并且大多数向左或向右倾斜的滑动会激活其他行为并且不更改滚动位置。
我知道我可以通过覆盖 scrollViewDidScroll 并比较以前和当前的 contentOffset 来获得滑动角度,但我无法阻止滚动视图在那里滚动。
如何限制滚动 UIScrollView 的滑动角度?
【问题讨论】:
标签:
ios
objective-c
uiscrollview
【解决方案1】:
我认为 scrollViewDidScroll 对于您想要实现的目标来说为时已晚。
也许可以尝试将 UIScrollView 的 directionalLockEnabled 属性设置为 YES。(不确定这是否有帮助......但玩和它)
和/或实现 UIScrollViewDelegate 方法 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView 并在此方法实现中获取指向 panGestureRecognizer (readonly) 属性的指针UIScrollView 传入。
从那里调用 UIPanGestureRecognizer 上的 translationInView:,传入应在其坐标系中计算平移手势平移的视图,并使用 返回的 CGPoint 使用三角函数计算角度,如果不在预定范围内,则调用 UIPanGestureRecognizer 上的 setTranslationInView: 进行恢复。