Swift NavigationBar隐藏后的右滑手势效果
发布时间 - 2026-01-11 03:00:29 点击率:次需求

我们在开发中经常遇见这样的需求,就是A视图没有导航,pushB视图后导航栏。然后要求可以使用iOS的系统侧滑返回功能。类似如下的功能:
问题
在处理这个需求的时候,我们一般会遇到两个问题:
右滑返回手势
ios开发中,使用push视图,系统是有默认的侧滑返回上个视图的功能。但是当我们自定义导航栏时,这个手势的事件就没有再触发,此时只要我们重新将代理设置为controller即可。
代码示例:
在BaseViewController中添加如下的代码
//开启 push视图 右滑手势()
fileprivate func openSwipe(){
if(self.navigationController != nil){
self.navigationController!.interactivePopGestureRecognizer!.delegate = self;
}
}
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if self.navigationController?.viewControllers.count == 1{
return false;
}
return true;
}
或者在BaseNavigationController中添加如下代码:
extension BaseNavigationController:UIGestureRecognizerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.interactivePopGestureRecognizer?.delegate = self
}
func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if self.navigationController?.viewControllers.count == 1{
return false;
}
return true;
}
}
右划返回时导航栏的隐藏问题
oc代码:
-(void)viewWillAppear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:YES animated:true];
}
-(void)viewWillDisappear:(BOOL)animated{
[self.navigationController setNavigationBarHidden:NO animated:false];
}
Swift代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(false);
self.navigationController?.setNavigationBarHidden(true, animated: true)
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated);
self.navigationController?.navigationBar.isHidden = false;
}
注意点
我们隐藏导航栏的时候,务必使用animated为true.这样在右划返回视图的时候才不会突兀,否则则会是下面的效果。刚开始滑动,导航栏就全不见了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Swift
# NavigationBar
# 右滑手势
# 使用Swift代码实现iOS手势解锁、指纹解锁实例详解
# 在Swift程序中实现手势识别的方法
# Swift中实现点击、双击、捏、旋转、拖动、划动、长按手势的类和方法介绍
# Swift在控件中添加点击手势的方法
# IOS 开发之swift中手势的实例详解
# 是有
# 自定义
# 不见了
# 可以使用
# 刚开始
# 当我们
# 上个
# 设置为
# 则会
# 大家多多
# 就全
# brush
# cpp
# class
# BaseViewController
# pre
# fileprivate
# nil
# interactivePopGestureRecognizer
# delegate
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
iOS中将个别页面强制横屏其他页面竖屏
Linux安全能力提升路径_长期防护思维说明【指导】
大连 网站制作,大连天途有线官网?
谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复
Laravel如何配置Horizon来管理队列?(安装和使用)
Laravel如何配置任务调度?(Cron Job示例)
WordPress 子目录安装中正确处理脚本路径的完整指南
图册素材网站设计制作软件,图册的导出方式有几种?
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
详解Android图表 MPAndroidChart折线图
进行网站优化必须要坚持的四大原则
googleplay官方入口在哪里_Google Play官方商店快速入口指南
Laravel如何为API生成Swagger或OpenAPI文档
如何确保西部建站助手FTP传输的安全性?
Laravel如何实现全文搜索功能?(Scout和Algolia示例)
网站图片在线制作软件,怎么在图片上做链接?
如何在企业微信快速生成手机电脑官网?
Mybatis 中的insertOrUpdate操作
Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册
php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】
如何在阿里云域名上完成建站全流程?
Laravel如何处理JSON字段的查询和更新_Laravel JSON列操作与查询技巧
,怎么在广州志愿者网站注册?
laravel怎么配置Redis作为缓存驱动_laravel Redis缓存配置教程
Laravel如何编写单元测试和功能测试?(PHPUnit示例)
Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用
开心动漫网站制作软件下载,十分开心动画为何停播?
Laravel如何使用Telescope进行调试?(安装和使用教程)
浅析上传头像示例及其注意事项
Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程
Laravel怎么写单元测试_PHPUnit在Laravel项目中的基础测试入门
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】
轻松掌握MySQL函数中的last_insert_id()
七夕网站制作视频,七夕大促活动怎么报名?
中国移动官方网站首页入口 中国移动官网网页登录
如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?
Laravel怎么为数据库表字段添加索引以优化查询
javascript中的数组方法有哪些_如何利用数组方法简化数据处理
PHP 500报错的快速解决方法
Laravel怎么判断请求类型_Laravel Request isMethod用法
Linux系统命令中screen命令详解
EditPlus中的正则表达式实战(5)
Laravel如何自定义错误页面(404, 500)?(代码示例)
,在苏州找工作,上哪个网站比较好?
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】

