news 2026/5/19 20:43:38

再次紧急修复,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/5/16 16:48:24

[MoeCTF 2022]nyanyanya

下载后用010发现存在LSB,一般线索就是在开头或结尾。 用Zsteg做,‌zsteg是一款用于检测PNG和BMP图片中隐藏数据的工具。 先解释一下LSB。LSB指的是一个二进制数中影响数值最小的那一位,一般是二进制数中最右边的位,其对数值的影响…

作者头像 李华
网站建设 2026/5/16 20:03:56

公司人员管理系统源码 Python+Django+Vue 前后分离 设计文档

一、关键词公司人员管理系统、员工管理系统、人事管理系统、企业人员系统、部门管理系统二、作品包含源码数据库设计文档全套环境和工具资源本地部署教程三、项目技术前端技术: Html、Css、Js、Vue2.6、Element-ui后端技术:Python、Flask、PyMySQL四、运…

作者头像 李华
网站建设 2026/5/12 19:51:08

bupt c++慕课测试与作业9章

定义复数类,数据成员包括实部和虚部;成员函数有构造函数,带默认参数值(1,1)。以成员函数或友元函数的方式重载运算符,实现两个复数相加的功能。还有一个成员函数,输出复数abi。 编写主程序测试复…

作者头像 李华