右滑退出手势及隐藏导航栏存在的风险
右滑手势
- 基本原理:
- interactivePopGestureRecognizer.enabled在正常情况下控制手势是否可用,默认是可用状态
- 如果重写了返回按钮, 需要设置interactivePopGestureRecognizer.delegate才能重新启动手势功能
- 调用时机:
- 改变手势设置和恢复手势设置应该在viewDidAppear: 和viewWillDisappear: 里成对调用
- 其他: viewWillAppear:等函数里应该调用super的对应函数。
- 现有问题
- 当在viewWillAppear里设置interactivePopGestureRecognizer.enabled = NO时,右滑退出时会卡死界面。
- 如果interactivePopGestureRecognizer.delegate = nil 后没有恢复成原值, 就会打开一些原本不需要返回手势的页面
- 修改
- 在基类HDFBaseViewController里统一处理了自定义返回按钮的返回手势的情况:调forceEnablePopGesture函数可以强制启用返回手势。
- 第三方库: MLTransition
正确的写法:
原因是视图生命周期调用顺序不对
NavigationBar的展现
- [self.navigationController setNavigationBarHidden:YESorNO animated:YESorNO];
- 现有问题: 如果在viewWillAppear/viewWillDisappear里调用[self.navigationController setNavigationBarHidden:YES animated:NO], 返回手势进行一半时取消, 然后再多次返回后会出现导航栏错乱的情况.
- 导航乱错乱不是出现在当前页面的当前操作, 而是会出现在几个之后的页面, 很难查找原因
- 修改:
- 修改animated的值, 改成 [self.navigationController setNavigationBarHidden:YESorNO animated:animated]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?