文创设计网站外贸公司属于什么企业
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 即可,简单有效,全局生效。
欢迎点赞、收藏、评论交流 🙌
