iPad 使用触摸笔 uni-app 应用会卡死

iPad 使用触摸笔 uni-app 应用会卡死

开发环境 版本号 项目创建方式
Mac 13.5 HBuilderX
# 操作步骤:
使用 vue3 创建页面,使用触摸笔来点击元素

# 预期结果:
正常触发事件

# 实际结果:
整个应用卡死

# bug描述:
用户反馈,在 iPad 10 th(包括型号的iPad) 上使用手触摸正常使用,但是用触摸笔就会,整个应用卡死状态。
我们在离线打包下也测试,确实会出现这个问题:
报错信息如下:
Touch event gesture recognizer failed to reset after ending gesture deferral: (
"<WKDeferringGestureRecognizer: 0x14b7b2d00 (Deferrer for touch start (synthetic tap)); baseClass = UIGestureRecognizer; state = Ended; view = <WKContentViewMinusAccessoryView: 0x104e97c00>>"
)

更多关于iPad 使用触摸笔 uni-app 应用会卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html

5 回复

手势冲突导致的

更多关于iPad 使用触摸笔 uni-app 应用会卡死的实战教程也可以访问 https://www.itying.com/category-93-b0.html


请问怎么解决呀?

我们也是,直接卡死

发一下具体出现问题的部分代码

这是一个已知的WebKit在iPad上的兼容性问题,主要与WKWebView处理触摸笔输入的方式有关。以下是具体分析和解决方案:

  1. 问题原因:
  • WKWebView的触摸笔事件处理机制存在缺陷
  • WebKit的gesture recognizer在触摸笔输入时未能正确重置
  • 该问题在iOS 13+的iPad设备上较为常见
  1. 临时解决方案: 在manifest.json中配置:
"ios": {
  "webView": "UIWebView"
}

这会强制使用旧版UIWebView,但注意UIWebView已被苹果标记为废弃。

  1. 推荐解决方案:
// 在页面中添加以下代码阻止默认行为
document.addEventListener('touchstart', function(e) {
  if(e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) {
    e.preventDefault();
  }
}, {passive: false});
回到顶部