我正在为一个身体残疾的人群开发应用程序,在测试中我们发现他们在默认的触摸拖动功能方面遇到了很多麻烦.
我们有一个屏幕,其中UIScrollView中有一个图标网格.您可以触摸图标将其激活,您可以触摸拖动网格中的任何位置,包括图标,滚动网格并查看更多图标.
在iOS中,默认行为是您在一个动作中触摸并拖动.这需要一定程度的物理协调,如果您触摸并暂停然后拖动,或稍微偏离航线,系统会将此视为简单的触摸.所以我们的测试人员正在做的事情如下:
>触摸,暂停片刻,然后尝试拖动.网格不滚动.如果他们试图通过拖动图标滚动,当他们释放触摸时,它会激活图标.
>触摸,尝试垂直拖动(唯一支持的方向),但首先水平转向一点.与上述结果相同.
所以问题是:有没有办法覆盖触摸处理以建立更慢的缓慢或拖动不准确的容忍度,以便应用程序将正确地将上述操作解释为滚动请求?
解决方法
首先,完全读取
this guide(如果需要,两次或三次),以便了解UIkit的触摸机制是如何构建的.它涉及用户认为触摸的内容,事件如何与底层硬件交互,所有对象拦截它的内容,以及如何根据需要调整现有UIkit触摸界面,至少在概念上如此.
引起我注意的一些你不容错过的东西也是this,尤其是timestamp,phase和prevIoUsLocationInView等属性. (我只提到那些不太受欢迎的).
最后,我不知道,但你最终可以根据自己的需要定制creating your own custom gesture recognizer.
更新:
虽然与要求不太相关,但this对于初学者来说是一个良好的开端.