当前位置: 首页 > news >正文

再次紧急修复,Flutter 针对 WebView 无法点击问题增加新的快速修复

前几天我们刚聊了 《Flutter 官方正式解决 WebView 在 iOS 26 上有点击问题》 ,这是一个完整的底层重构修复,整个修复周期审核堪比“博士论文”,但是也带来了一个问题,它只修复了 Engine 和 Framework 层面问题,那插件端还需要等升级适配修复,这链路就又再一次拉长了

所以针对这个场景,作者又提交了一个“骚操作”的快速修复,#179908 这个 PR 的修复方案非常“暴力”但也有效:找到那些特定的手势识别器,先禁用它们,然后立即重新启用, 这相当于重置了识别器的状态。

是不是又有熟悉的味道?不理解的可以看上上篇讲这个点击问题的内容。

为什么需要这个新的 PR ?因为这是一个无需任何插件更新的快速修复方案,并且也已经合并到了 master :

这个 PR 具体的代码修改就是:在FlutterTouchInterceptingView中添加了两个核心的辅助方法,并在blockGesture中调用:

  • searchAndFixWebView: 一个递归函数,它会遍历视图层级,如果遇到的视图是WKWebView类型,它就会调用修复手势的方法,执行searchAndFixWebViewGestureRecognzier,确保即使WKWebView被嵌套在其他UIView中也能被找到

  • searchAndFixWebViewGestureRecognzier: 也是一个递归函数,遍历当前视图的所有gestureRecognizers,检查识别器是否启用,并且类名是否用"TouchEventsGestureRecognizer"结尾 (通常对应WKTouchEventsGestureRecognizer) ,然后执行recognizer.enabled的关闭和打开操作:

  • 修改了blockGesture, 当手势拦截策略为FlutterPlatformViewGestureRecognizersBlockingPolicyEager时,在 iOS 26 改为直接调用[self searchAndFixWebView:self.embeddedView];来执行上述修复逻辑:

最后,方案还增加了一个FLTDisableWebViewGestureReset,给开发者添加了一个安全阀,通过读取Info.plist中的FLTDisableWebViewGestureReset,如果这个修复方案上线后出现严重问题,开发者可以通过配置这个 flag 来禁用这个“重置手势”的逻辑。

可以看到,这是一个快速且粗暴的改动,就是在FlutterPlatformViews.mm中实现了针对WKWebView手势识别器的递归搜索和“重启”机制,并在blockGesture中针对 iOS 26+ 启用了这个机制

但是好处也很明显,可以什么插件都不改就生效,当然主要是一个临时修复,为的是方便开发者快速解决问题,真正 fix 的途径还是推荐走之前的 hitTest :

参考链接

https://github.com/flutter/flutter/pull/179908

http://www.zskr.cn/news/117431.html

相关文章:

  • 学生管理系统源码 Python+Django+Vue 前后分离 设计文档
  • 【即插即用模块】SCI1区 IF 15.5!| 空间注意力融合模块聚合结构细节,跨注意力融合模块捕捉全局语义,兼顾细粒度与上下文!SCI保二区争一区!彻底疯狂!!!
  • 16、Linux 中 IPX 与 NCP 文件系统的使用与配置
  • iOS 18.1 - iOS 26.x 抢先开启国行 Ai、分屏,Misaka26 工具来袭!!!!! - 指南
  • 【即插即用模块】SCI1区 | CNN为什么不能捕获长距离特征?双坐标注意力牛在哪:平均+最大池化并行,涨点必备,SCI保二区争一区!彻底疯狂!!!
  • langfuse 使用
  • 基于大数据的交通信号智能控制系统的设计与实现任务书
  • 17、Taylor UUCP 配置与使用指南
  • 18、Linux 电子邮件管理全解析
  • 收藏!程序员转型大模型:不是从零开始,而是降维升级
  • Git入门学习
  • NVIDIA正式推出Nemotron 3:用开放模型重塑AI多智能体时代
  • 为什么越来越多跨境卖家从平台转向独立站?
  • SC4D50120H-JSM 碳化硅肖特基二极管
  • 【强烈推荐】LangGraph核心概念解析:State管理+实战案例,一篇搞定大模型开发
  • 第11讲 蓝牙模块与建议数据包解析
  • 揭秘知识图谱与大模型的黄金组合,解决大模型幻觉问题的实战指南!
  • SpringBean生命周期,动态代理
  • 2*8的lcd显示屏自动居中
  • 几种不同的技师展示、推荐形式,每个客户一上来就能找到喜欢的技师,立刻下单!
  • 基于大数据的餐饮食材管理系统的设计与实现开题报告
  • 基于SpringBoot的鸟博士微信小程序设计与实现(程序+文档+讲解)
  • 基于大模型LLM的开发与编程教程
  • Android-Audio-为啥不移到packages/module
  • 2025 OA 选型关键看这 4 点:集成、灵活、安全、易用,附高性价比系统清单
  • Flink startNewChain 核心解析
  • 41、深入探究Linux文件共享与编程开发
  • 图神经网络与pytorch
  • 读捍卫隐私09匿名指南
  • Flink 翻滚窗口、滑动窗口、会话窗口核心区别