Android Moto G5 Plus(安卓8)混合应用Touch Events无法触发求助
我之前确实碰到过类似的Moto G5 Plus触摸事件异常的情况,给你几个针对性的排查和解决方向:
检查设备触摸灵敏度设置
Moto G系列部分机型自带触摸灵敏度调节功能,你可以去「设置-显示-触摸灵敏度」(路径可能因系统小版本略有差异)把灵敏度拉到最高。不少用户反馈这个系统设置会影响WebView内的触摸事件识别,调整后大概率能解决问题。验证WebView配置项
如果你用的是Cordova、Capacitor这类混合框架,重点检查WebView的相关配置:- 确认没有禁用触摸事件的配置,比如Cordova中的
DisallowOverscroll这类偏好设置; - 尝试开启WebView硬件加速,在AndroidManifest.xml对应的Activity标签里添加
android:hardwareAccelerated="true"——部分Moto设备默认关闭硬件加速会导致触摸事件无法正常触发。
- 确认没有禁用触摸事件的配置,比如Cordova中的
测试原生WebView的基础触摸行为
写一个极简的原生Android项目,只嵌入WebView加载包含基础触摸事件的静态HTML(就是你调试用的document.addEventListener("touchstart", function(){ alert("touch started"); });这段代码),测试是否能触发事件:- 如果原生WebView也失效,说明是系统层面的问题,可以尝试给设备安装可用的系统补丁;
- 如果原生WebView正常,那问题就出在混合应用框架的配置或代码逻辑上。
尝试替换为Pointer Events
安卓8已经支持Pointer Events标准,你可以把触摸事件替换为指针事件试试,比如用pointerdown替代touchstart,示例代码:document.addEventListener("pointerdown", function(){ alert("touch started"); }, { passive: false });指针事件能统一处理触摸、鼠标等输入,部分机型对它的兼容性更好,说不定能绕过这个机型的触摸事件bug。
排查全局触摸拦截逻辑
检查应用里有没有全局的触摸拦截代码,比如第三方手势库、自定义的滑动返回逻辑等,这些代码可能在Moto G5 Plus上意外拦截了所有触摸事件。可以临时移除这些依赖,只保留基础触摸事件代码测试,逐步定位问题点。
内容的提问来源于stack exchange,提问作者Diwakar Narayan

