【发布时间】:2019-10-07 10:19:28
【问题描述】:
我的情况是我有两个可滚动的视图,一个是水平的,另一个是垂直的。有没有办法检测用户是否做了垂直或水平手势,并据此选择要与之交互的视图?
感谢您的帮助。
【问题讨论】:
-
你想根据方向对卷轴做点什么吗?
标签: ios scroll gesture uitapgesturerecognizer
我的情况是我有两个可滚动的视图,一个是水平的,另一个是垂直的。有没有办法检测用户是否做了垂直或水平手势,并据此选择要与之交互的视图?
感谢您的帮助。
【问题讨论】:
标签: ios scroll gesture uitapgesturerecognizer
您可以使用UIScrollViewDelegate 中的scrollViewWillBeginDragging 来获取滚动的方向。
func scrollViewWillBeginDragging(_ scrollView: UIScrollView) {
let translation = scrollView.panGestureRecognizer.translation(in: scrollView.superview)
if translation.y > 0 {
// swipes from top to bottom of screen -> down
} else {
// swipes from bottom to top of screen -> up
}
}
但由于此方法不返回滚动视图,因此您只会知道拖动了哪个滚动以及向哪个方向拖动。
【讨论】:
请查看 isDirectionalLockEnabled 是否有帮助。 这有助于锁定滚动方向。
如果此属性为 YES 并且用户开始沿一个大致方向(水平或垂直)拖动,则滚动视图将禁用在另一个方向上的滚动。如果拖动方向是对角线,则滚动不会被锁定,用户可以向任意方向拖动,直到拖动完成。
【讨论】: