使用Surface 触摸屏在查看器中选择元素,有时,它似乎转换为旋转/缩放操作。在这种情况下,查看器旋转/移动,而不选择元素。
在记录事件时,有大量的鼠标向下/向上的事件,当鼠标不工作时,随着鼠标的移动。当select确实工作时,就会发生一个单击事件。
双击似乎工作正常。缩放/旋转等使用标准工具工作正常。
使用键盘覆盖触控板,您可以得到为Surface移动和点击工作,如预期和选择的元素。
在GETAC Windows 10平板电脑上运行相同的应用程序,select元素工作正常,因此它似乎与Surface相关。
无法更改浏览器,因为cordova应用程序在windows上使用IE11,这一点目前是固定的。
目前我能想到的唯一解决方案是完全删除标准导航工具(以某种方式),并重新创建一个select模式工具,该工具将忽略鼠标的任何移动,并使用按钮向下事件来选择元素。
对如何解决这个问题有什么建议吗?
技术细节: Windows 10 Pro,Surface,Browser: IE11,Viewer版本2.11,其他: WINJS81 cordova应用程序
谢谢你的帮助
发布于 2017-06-26 07:24:46
过去,我们在Surface上的触摸事件中遇到了问题。这听起来像触摸屏的边缘是过于敏感,并触发额外的触点。
当你举起设备,用一只手抓住,用你的另一只手触摸/选择一个3D物体时,这个问题会发生吗?
你能再试一次做一个选择,但这一次,确保你的另一只手没有握住屏幕的边缘?(也许把设备放在桌子的表面,所以你不会拿着它)
发布于 2017-07-07 04:55:33
找到了解决这个问题的方法。在基本工具控制器中的viewer3D中,有一行
var kClickThreshold = 2;
此值将在代码中进一步向下使用,以确定是否发生了singleClick。它是通过比较XY在向下和向上的事件来实现的。
var deltaX = _downX - event.canvasX;
var deltaY = _downY - event.canvasY;
_downX = -1;
_downY = -1;
if( Math.abs(deltaX) <= kClickThreshold && Math.abs(deltaY) <= kClickThreshold )
_this.handleSingleClick( event );
如果移动高于此阈值,则如果低于此阈值,则不会触发singleClick。
测试并将这个值提高到5-7左右意味着元素的选择是一致的。(在选择发生的同时仍有一个小的旋转或缩放,但我假设这将是观众中需要调整的另一部分)
不幸的是,它确实需要编辑查看器代码,但非常容易。如果存在外部变量,我添加了代码来覆盖标准值。
如果公开更多的这些类型的属性,这样就不需要直接编辑代码,对将来的查看器dev来说就更好了。
尽管如此,让源代码能够在这个级别上进行调试还是很好的。
据猜测,Surface 4必须有一个更敏感的触摸系统,否则它也可能与IE11相关。
https://stackoverflow.com/questions/44714562
复制相似问题