AI大模型教程
一起来学习

SwiftUI隐藏返回按钮保留右滑手势方案

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隐藏返回按钮保留右滑手势方案

相关推荐: AIGC绘画: ComfyUI安装及环境配置

前言 本文档所记载内容为**在本地安装配置ComfyUI的完整流程。**安装流程可能随时间变更,文档会随之更新,但请以项目主页记载的为最终标准。 ComfyUI简介 ComfyUI是一种新型的Stable Diffusion用户界面,因其独树一帜的“节点式”界…

赞(0)
未经允许不得转载:5bei.cn大模型教程网 » SwiftUI隐藏返回按钮保留右滑手势方案
分享到: 更多 (0)

AI大模型,我们的未来

小欢软考联系我们