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 · 刘胜
树洞