我有自定义 UIScrollView 子类,里面有一些内容视图。其中一些我有 UITapGestureRecognizer。当滚动视图不滚动时,一切正常。但是当它滚动内容视图时不会收到点击动作。在滚动视图滚动时通过子视图处理点击动作的最简单解决方案是什么?
细节:
MyScrollView
水平滚动。它包含很多内容视图(例如MyContentView
)。每个MyContentView
具有大约三分之一宽度的MyScrollView
宽度。因此,一次大约有 3-4 个可见MyContentView
元素。的主要行为MyScrollView
是 1)确保滚动后MyContentView
元素之一将位于屏幕中心, 2)如果用户点击它,则滚动到中心MyContentView
。所以我希望得到的主要答案是如何在减速MyContentView
时“正确”实现对点击动作的处理。MyScrollView
我发现了一些相同的问题和答案,但没有一个让我满意。最好的方法是实现gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
UITapGestureRecogniser 委托。但在这种情况下,我有时(当我点击时,使 smaaaal 拖动并释放手指,以便点击是钢可识别的(让我们称之为准点击))有点击和滚动事件,即使滚动视图没有滚动,它也会给我带来错误当我开始点击时。当用户进行准点击时,我的应用程序会尝试滚动到被点击的MyContentView
元素,然后立即处理正常滚动。这似乎更可怕,因为在处理点击后开始执行一些其他功能(在正常滚动时它不能执行)。
我需要滚动视图等待足以确定它不是点击事件然后才进行滚动的解决方案。否则,如果点击事件已识别滚动,则不得发生。