news 2026/6/12 2:53:13

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
再次紧急修复,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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/9 22:57:40

谷歌移动端排名和电脑端差距大|做SEO优化要选哪个?

“你的网站在手机和电脑上的谷歌排名差距超过20位?这可能不是偶然。​​自从谷歌推行‘移动优先索引’规则后,许多企业发现移动端排名突然暴跌,甚至出现PC端有排名、移动端完全搜不到的情况。移动端和PC端的流量占比是多少?我们曾…

作者头像 李华
网站建设 2026/6/10 17:30:50

openCV深度劝学:写给所有初学者的四千字血泪心声

openCV深度劝学:写给所有初学者的四千字血泪心声学弟学妹们:此刻是凌晨三点,我刚调试完一个复杂的多目标跟踪算法。窗外寂静无声,而我的电脑屏幕上,一个个检测框正稳定地锁定着视频中的行人。这不是什么了不起的成就&a…

作者头像 李华
网站建设 2026/6/10 19:01:14

【数据结构】败者树、B树、排序、查找

目录 败者树(Loser Tree) B树(B-Tree) 排序算法总结 查找算法总结 败者树(Loser Tree) 多路平衡归并排序(胜者树、败者树)算法详解 - C语言中文网 多路归并、败者树、置换-选择…

作者头像 李华
网站建设 2026/6/10 19:01:35

Agentic AI提示工程的商业价值:如何应对AI技术的快速迭代?

Agentic AI提示工程:破解AI快速迭代困局的商业密钥 一、引言:AI时代的“迭代焦虑”,你中招了吗? 凌晨3点,某电商公司AI产品经理小李还在办公室加班。上周刚上线的智能客服Agent,今天突然收到大量用户投诉—…

作者头像 李华
网站建设 2026/6/10 17:23:54

什么是基于大模型的智能体构建?

在人工智能迅速发展的今天,大语言模型(Large Language Models, LLMs)已经从单纯的文本生成工具演变为推动新一代智能系统的核心引擎。基于大模型的智能体构建,正是这一技术浪潮中最具前景的方向之一。它不仅仅是让机器“说话”或“…

作者头像 李华
网站建设 2026/6/11 23:18:41

Java毕业设计-基于springboot开发的医院信管系统,从零到一构建项目,收藏这篇足够了

文章目录 前言一、毕设成果演示(源代码在文末)二、毕设摘要展示 1.开发说明2.需求分析3、系统功能结构 三、系统实现展示 1、系统功能模块2、管理员功能模块3、 医生功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发的医院信管…

作者头像 李华