如何修改触摸和拖动灵敏度?

Jos*_*ank 9 ios

我正在为一个身体残疾的人群开发应用程序,在测试中我们发现他们在默认的触摸拖动功能方面遇到了很多麻烦.

我们有一个屏幕,其中UIScrollView中有一个图标网格.您可以触摸图标将其激活,您可以触摸拖动网格中的任何位置,包括图标,以滚动网格并查看更多图标.

在iOS中,默认行为是您在一个动作中触摸并拖动.这需要一定程度的物理协调,如果您触摸并暂停然后拖动,或者拖一点偏离航线,系统会将此视为简单的触摸.所以我们的测试人员正在做的事情如下:

  • 触摸,暂停片刻,然后尝试拖动.网格不滚动.如果他们试图通过拖动图标滚动,当他们释放触摸时,它会激活图标.

  • 触摸,尝试垂直拖动(唯一支持的方向),但首先水平转向一点.与上述结果相同.

所以问题是:有没有办法覆盖触摸处理以建立更慢的缓慢或拖动不准确的容忍度,以便应用程序将正确地将上述操作解释为滚动请求?

Jos*_*ank 0

事实证明,默认UIScrollView滚动是正确的,但问题很简单,如果用户触摸按钮,按钮获得触摸事件,而不是ScrollView,这让我很困惑。

所以我遇到的这个问题的解决方案是禁用按钮,然后 ScrollView 接收触摸。然后,我使用一个自定义子类,UIScrollView在其中实现TouchesBeganTouchesEnded方法。在这些方法中,我记录用户向下和向上触摸的位置,如果它们彼此靠近并且位于(禁用的)按钮上方,则我会执行该按钮执行的操作。

这工作得很好,但我认为这肯定比需要的工作量更多。所以也许我的问题应该是:有没有办法让按钮保持启用状态,但使滚动视图在其子视图之前获取触摸事件,根据需要滚动,然后将事件中继到子视图?