触摸屏:区分滚动开始和点击

时间:2011-09-14 17:42:10

标签: language-agnostic touchscreen

我正在为触摸屏手机写点东西。我希望程序在用户点击屏幕时运行指定的功能。当用户在屏幕上向上或向下拖动手指时,我想滚动屏幕。

操作系统有三个相关的回调功能(1)检测触摸屏幕的时间,(2)检测手指在屏幕上拖动的时间,以及(3)检测手指离开屏幕的时间。在每种情况下,回调函数都会获取相关事件发生的屏幕坐标。

问题在于,当手指离开屏幕时,拖动显然会以手指触摸屏幕开始。攻丝通常被检测为触摸,非常短的拖动和结束触摸。如果我只是在点击时调用我的指定功能,我将触发屏幕拖动事件而不是真正的点击。

我能想到的最好的方法是在用户第一次触摸时标记时间或位置。如果我们在短时间或距离之后处于拖动回调函数中,则将其视为滚动。否则,如果有一个离开屏幕回调,请将其视为点按。问题包括注意时间的成本,决定使用多少时间或距离作为触发因素以及是否有更好的一般方法。

我的应用程序是用于Symbian设备的python。由于这不是一个非常受欢迎的平台,任何有关最佳实施方式的建议都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我能想到的最佳方法是:

触摸回调:设置action_location = drag_location = current_location(os报告的current_location)

取消触摸回调:如果在current_location的distance_threshold(例如,20或25像素)内的action_location,则执行操作

拖回回调:如果drag_location超过来自current_location的distance_threshold,请滚动并设置drag_location = current_location