SwiftUI 隐藏返回按钮但保留右滑返回手势的方案
在 SwiftUI 中,如果你使用:
.navigationBarBackButtonHidden(true)
可以隐藏系统返回按钮,但会发现 右滑返回手势(边缘返回)失效了。
这是因为 SwiftUI 底层使用了 UINavigationController,隐藏返回按钮后,系统默认禁用了手势。
✅ 目标
- 隐藏系统返回按钮
- 保留 iOS 原生右滑返回手势
- 支持自定义返回按钮
🛠 解决方案
通过扩展 UINavigationController 恢复手势代理:
Swift 5.9+(使用 @retroactive)
extension UINavigationController: @retroactive UIGestureRecognizerDelegate {
open override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gesture: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
Swift 5.8 及以下
extension UINavigationController: UIGestureRecognizerDelegate {
open override func viewDidLoad() {
super.viewDidLoad()
interactivePopGestureRecognizer?.delegate = self
}
public func gestureRecognizerShouldBegin(_ gesture: UIGestureRecognizer) -> Bool {
return viewControllers.count > 1
}
}
⚠️ 注意事项
| 使用方式 | 是否影响右滑返回 |
|---|---|
.navigationBarBackButtonHidden(true) |
✅ 可用(需手动恢复) |
.navigationBarHidden(true) |
❌ 禁用手势 |
嵌套新的 NavigationStack
|
❌ 禁用手势 |
✅ 总结
如果你想在 SwiftUI 中:
- 自定义返回按钮
- 隐藏系统返回按钮
- 保留右滑返回手势
使用上述方式扩展 UINavigationController 即可,简单有效,全局生效。
欢迎点赞、收藏、评论交流 🙌
文章来源于互联网:SwiftUI隐藏返回按钮保留右滑手势方案
前言 本文档所记载内容为**在本地安装配置ComfyUI的完整流程。**安装流程可能随时间变更,文档会随之更新,但请以项目主页记载的为最终标准。 ComfyUI简介 ComfyUI是一种新型的Stable Diffusion用户界面,因其独树一帜的“节点式”界…
5bei.cn大模型教程网











