我有一个ScrollView,它是我的应用程序的根目录(例如在Tinder应用程序中)。用户通过滚动此根scrollview进入我的应用程序的不同页面
在这些“页面”之一上,我需要有一个非常具体的行为:
如果用户在此页面上垂直或几乎垂直平移,则需要防止根滚动视图滚动并具有特定的独立行为(必须用手指的Y位置更新此页面上的标签,当它在屏幕上移动时)
如果用户在此页面上水平或几乎水平平移,则滚动视图将正常滚动到其他页面,并且不会触发特定行为
到目前为止,我覆盖了具有特定行为的页面的touchesBegan,touchesMove和touchesEnd函数。在touchesMoves中,我编码为,如果移动是垂直的(计算为:abs(lastPosition.x-x)
然后我覆盖此功能:
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
{
return !specificBehaviour
}
我必须承认我不知道为什么要这样做,我是在网上的一个教程中找到的。但是,每次我设置specificBehaviour
时都不会适当地调用此函数。最后,scrollview相当随机地滚动,并开始/移动吃触摸,或者有时即使水平滚动,scrollview也被完全阻塞
我想在页面上说:如果您发现该运动是垂直的,请不要将该运动发送到后面的滚动视图,如果您发现该运动是水平的,请将该运动发送到滚动查看。