我正在使用Web应用程序,在该应用程序中用户应该能够在平板电脑上签署文档。我们使用Galaxy Tab 12.2是因为S笔具有所需的精度。
我在其上绘画的 Canvas 使用侦听touch事件在 Canvas 上绘画。

        canvas.addEventListener('touchstart', handleStart);
        canvas.addEventListener('touchmove' , handleMove);

这里的问题是,如果用户用手指触摸 Canvas ,则 Canvas 将在此处绘制线条。

有没有办法区分S-Pen事件和“正常”触摸事件?

我知道在带有Internet Expoler的Surface Pro 3上,我可以处理不同于手指输入的笔输入。

最佳答案

好的,所以我自己找到了一个运行良好的解决方案。
SPen使用ontouchradiusX = 0触发radiusY事件。

用手指触发的事件的半径始终>0。因此,要做的就是添加

if(e.targetTouches[0].radiusX === 0)

进入事件处理程序以在我的 Canvas 上绘制。

看看这个Jsfiddle

07-24 09:48
查看更多