Capacitor + React:iOS 侧滑返回手势(WKWebView 原生方案)

适用对象:用 Capacitor 把 React SPA 打包成 iOS App,二级页面希望支持系统左侧边缘右滑返回(交互式侧滑返回手势)。 问题背景 在 WKWebView(Capacitor iOS 容器)里跑 React Router 这类 SPA,经常会遇到: 二级页面无法侧滑返回; 能侧滑但上级页面预览是白屏/黑屏(看不到上一页内容); 自己实现手势(截图 + 叠层 + history.back())会引入大量时序/兼容性坑。 结论:优先用系统能力,而不是自研手势 核心思路:让 WebView 直接启用 WebKit 自带的交互式返回手势。 在 iOS 上,这个开关就是: webView.allowsBackForwardNavigationGestures = true 这比“自研 edge-pan + snapshot”可靠得多:交互曲线、阈值、上一页预览快照、渲染时机都由系统处理。 最小可用改动(3 步) 下面这 3 步就是能通过验收的关键(其余优化都可以后放)。 1) 用自定义 CAPBridgeViewController 子类接管 WKWebView 配置 文件:ios/App/App/AppDelegate.swift 新增 AppViewController: CAPBridgeViewController 在 viewDidLoad() 里统一设置背景色(减少“闪白/闪黑”),并启用系统手势 @objc(AppViewController) class AppViewController: CAPBridgeViewController { override func viewDidLoad() { super.viewDidLoad() self.view.backgroundColor = UIColor.systemBackground self.webView?.isOpaque = true self.webView?.backgroundColor = UIColor.systemBackground self.webView?.scrollView.backgroundColor = UIColor.systemBackground self.webView?.allowsBackForwardNavigationGestures = true } } 2) storyboard 把初始 VC 指向你的自定义 VC 文件:ios/App/App/Base.lproj/Main.storyboard ...

January 13, 2026 · 刘胜

Nonsense UI:一个专门制造交互障碍的 Vue 3 荒诞组件库

🤡 什么是 Nonsense UI? Nonsense UI 是一个专注于制造交互障碍的 Vue 3 荒诞组件实验室。它的核心理念是:拒绝用户体验,挑战直觉极限,提供反人类、反直觉的荒诞交互。 Nonsense UI 组件库主页 - 一个专注于制造交互障碍的荒诞组件实验室 您的浏览器不支持视频播放,请访问 官方文档 在线体验。 点击播放,体验 Nonsense UI 的荒诞交互效果 🎯 项目背景 Nonsense UI 是一个纯粹的娱乐项目,没有任何实际用途。它的存在就是为了整蛊和娱乐,让用户在尝试使用时感到困惑和挫败。 ✨ 核心特性 极致挫败:每一处交互都经过反直觉设计,确保用户在点击时产生怀疑 严谨乱来:交互很荒诞,但代码很严肃,全量 TypeScript 支持,工程化发布 毫无用处:这里没有任何能提升生产力的工具,纯粹为了娱乐 🔗 相关链接 🌐 官方文档: 在线体验 📦 NPM 包: 并不推荐安装的npm包,仅用于娱乐 💻 GitHub: 欢迎 Star 和 Fork,欢迎提 issue 👤 作者: @liusheng22 📝 更多项目: 我的项目列表 如果你对这个荒诞的组件库感兴趣,欢迎访问 Nonsense UI 组件库 来体验一下反人类 UI 设计吧!😄

January 9, 2026 · 刘胜

腾讯地图 SDK 接入到 uniapp 的多端解决方案

qqmap-uniapp:腾讯地图SDK的现代化解决方案 基于腾讯官方微信小程序JavaScript SDK v1.2,专为现代化开发环境打造的ES模块版本 背景:为什么需要这个包? 在开发基于 Vue3 + Vite 的 uni-app 项目时,笔者遇到了两个关键问题: 问题1:模块格式不兼容 腾讯官方提供的 qqmap-wx-jssdk.min.js 是一个 CommonJS 格式的文件,而现代构建工具如 Vite、Webpack 5+ 默认使用 ES Module(ESM) 格式。 // ❌ 官方SDK使用CommonJS格式 var QQMapWX = require('qqmap-wx-jssdk.min.js'); // ✅ Vue3 + Vite需要ESM格式 import QQMapWX from 'qqmap-uniapp'; 问题表现: Vite 无法正确解析 module.exports,导致导入失败 编译错误:require is not defined or ReferenceError: Can't find variable: require __ERROR 问题2:平台限制过于严格 官方SDK只支持微信小程序环境,使用了 wx.request 进行网络请求,这限制了其在其他平台的使用: // 官方SDK中只使用wx.request wx.request({ url: 'https://apis.map.qq.com/ws/...', success: function(res) { /* ... */ } }); 在 uni-app 跨平台开发中,我们需要使用 uni.request 来实现一套代码多端运行。 问题表现: ...

November 27, 2025 · 刘胜

我的第一篇文章

欢迎来到我的个人网站! 这是我的第一篇文章,使用 Hugo 和 PaperMod 主题构建。 我会在这里分享技术文章、项目经验和一些思考。 敬请期待更多内容!

November 22, 2025 · 刘胜
树洞