如何阻止UIScrollView在某些特定时刻继续滚动?

时间:2019-07-19 16:39:45

标签: ios swift uiscrollview uigesturerecognizer uiresponder

我有一个ScrollView,它是我的应用程序的根目录(例如在Tinder应用程序中)。用户通过滚动此根scrollview进入我的应用程序的不同页面

在这些“页面”之一上,我需要有一个非常具体的行为:

  • 如果用户在此页面上垂直或几乎垂直平移,则需要防止根滚动视图滚动并具有特定的独立行为(必须用手指的Y位置更新此页面上的标签,当它在屏幕上移动时)

  • 如果用户在此页面上水平或几乎水平平移,则滚动视图将正常滚动到其他页面,并且不会触发特定行为

到目前为止,我覆盖了具有特定行为的页面的touchesBegan,touchesMove和touchesEnd函数。在touchesMoves中,我编码为,如果移动是垂直的(计算为:abs(lastPosition.x-x)specificBehavior设置为true。如果水平,则将其设置为false。

然后我覆盖此功能:

override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool
{
    return !specificBehaviour
}

我必须承认我不知道为什么要这样做,我是在网上的一个教程中找到的。但是,每次我设置specificBehaviour时都不会适当地调用此函数。最后,scrollview相当随机地滚动,并开始/移动吃触摸,或者有时即使水平滚动,scrollview也被完全阻塞

我想在页面上说:如果您发现该运动是垂直的,请不要将该运动发送到后面的滚动视图,如果您发现该运动是水平的,请将该运动发送到滚动查看。

0 个答案:

没有答案