触控事件延迟发生

3
我的应用程序在各个地方使用UiElement.TouchDown事件,其中之一是让用户停止旋转的轮子。 在这种情况下,可以很容易地注意到屏幕实际触摸和TouchDown事件之间的短暂延迟约为1/3秒。
我已将Stylus.IsPressAndHoldEnabled设置为false。
为了解决这个问题,我编写了一个测试工具来报告WPF事件和本机窗口消息,并注意到一旦我触摸屏幕,就会生成id为0x02CC、0x011B和0x011A的消息,大约在TouchDown事件之前100到300毫秒。 这使我相信驱动程序快速报告触摸,而延迟是在WPF翻译的后面某个地方引入的。
有没有办法使触摸交互更加响应? 请问您需要任何信息!

驱动程序本身将数据非常快速地发送到Windows事件,但是Windows却减慢了一切...如果你打开MSPaint并且快速绘制,你会发现你所画的线条并不在你的手指下方,存在一点延迟...我认为这是由于Windows的原因,我们可能无法解决这个问题...也许我错了。 - mlemay
这可能是有关联的,但我不认为这是在这种情况下的情况。如果我触摸后立即抬起手指,则TouchDown和TouchUp会同时被快速触发,比之前单个TouchDown更快。 - Jens
1
我们的团队正在与ELO和3M程序员讨论这个延迟问题,这是他们告诉我们的...触摸修补很快,因为Windows在上升事件上没有任何操作,在触摸事件上,Windows检查是否有手势等等...如果我们想要更快的速度,我们需要直接与驱动程序交流,而不是通过Windows事件... - mlemay
1个回答

2

除非需要在XAML中设置或通过代码手动设置,否则两者都不需要:(我假设您的意思是IsPressAndHoldEnabled而不是IsTouchAndHoldEnabled)

Stylus.IsPressAndHoldEnabled="False" Stylus.IsFlicksEnabled="False" 

此外,还需考虑处理TouchDown事件并将其捕获到相关的UI元素(不要忘记在TouchUp中释放它)。
uielement.CaptureTouch(e.TouchDevice);
e.Handled = true;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接