iOS:我可以以编程方式决定与哪个组件交互(滚动)吗?
Posted
技术标签:
【中文标题】iOS:我可以以编程方式决定与哪个组件交互(滚动)吗?【英文标题】:iOS: can I programmatically decide what component to interact with (scrolling)? 【发布时间】:2019-10-07 10:19:28 【问题描述】:我的情况是我有两个可滚动的视图,一个是水平的,另一个是垂直的。有没有办法检测用户是否做了垂直或水平手势,并据此选择要与之交互的视图?
感谢您的帮助。
【问题讨论】:
你想根据方向对卷轴做点什么吗? 【参考方案1】:您可以使用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
但由于此方法不返回滚动视图,因此您只会知道拖动了哪个滚动以及向哪个方向拖动。
【讨论】:
【参考方案2】:请查看 isDirectionalLockEnabled 是否有帮助。 这有助于锁定滚动方向。
如果此属性为 YES 并且用户开始沿一个大致方向(水平或垂直)拖动,则滚动视图将禁用在另一个方向上的滚动。如果拖动方向是对角线,则滚动不会被锁定,用户可以向任意方向拖动,直到拖动完成。
【讨论】:
以上是关于iOS:我可以以编程方式决定与哪个组件交互(滚动)吗?的主要内容,如果未能解决你的问题,请参考以下文章
在 iOS 13 上以编程方式滚动 SwiftUI ScrollView
如何在IOS中以编程方式滚动UICollectionViewCell?