问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ios 自定义导航返回按钮右滑返回失效怎么办

发布网友 发布时间:2022-04-23 07:23

我来回答

1个回答

热心网友 时间:2022-06-17 15:06

1.怎么自定义leftItem

其实~这个东西嘛~说简单也是很简单的~因为~我们很明确的知道~左导航栏就一个功能~那就是返回上一个界面~很显然~是需要用户交互的~必用按钮~
说多了都是废话~直接上代码~
//自定义一个按钮
UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [leftBtn setTitle:@"返回" forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(backLastView) forControlEvents:UIControlEventTouchUpInside];
leftBtn.frame = CGRectMake(0, 0, 60, 40);
[leftBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
//将leftItem设置为自定义按钮
UIBarButtonItem *leftItem =[[UIBarButtonItem alloc]initWithCustomView: leftBtn];
self.navigationItem.leftBarButtonItem = leftItem;
//按钮点击事件 返回上一个界面
- (void)backLastView{
[self.navigationController popViewControllerAnimated:YES];
}

需要注意的是~xcode自动从6.0之后~leftItem距左屏幕边距有16个像素点~这样会导致在视觉上会感觉有点偏右~不算美观~然而对于大多数*座的程序员来说~这明显是不能让人去接受的~解决办法有很多~在这里提供一个最为方便的方法~设置一下按钮的contentEdgeInsets(文字)imageEdgeInsets(图片)属性即可~如:leftButton.contentEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0);

2.为什么系统自带的右滑返回手势失效
这也是我一直所关系的问题~还希望知道的可以私信我~
笨笨编程官方微博
[http://weibo.com/2728581591/profile?rightmod=1&wvr=6&mod=personnumber]
qq:2638006336

3.怎么解决这个失效问题
其实很简单很简单~只需要添加下面这一句代码即可
self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

其实到这里~问题应该都解决了~但是~毕竟右滑返回手势只能靠近屏幕左边缘才能使用~我们如何通过调用系统方法来实现在整个屏幕右滑就可以实现返回功能呢~
setp1:需要获取系统自带滑动手势的target对象
id target = self.navigationController.interactivePopGestureRecognizer.delegate;
setp2:创建全屏滑动手势~调用系统自带滑动手势的target的action方法
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
step3:设置手势代理~拦截手势触发
pan.delegate = self;
step4:别忘了~给导航控制器的view添加全屏滑动手势
[self.view addGestureRecognizer:pan];
step5:将系统自带的滑动手势禁用
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
steo6:还记得刚刚设置的代理吗?下面方法什么时候调用?在每次触发手势之前都会询问下代理,是否触发。
这个方法就是拦截手势触发的方法.
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{}
return NO;则不需要触发滑动手势
return YES;则需要触发滑动手势

文/笨笨编程(简书作者)
原文链接:http://www.jianshu.com/p/78fc64d387ec
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
巴西龟最长活多久,家养!!! 养胃的药最好的是什么啊 婴儿积食发烧不愿吃药怎么办 板门穴位在哪个部位 手机设置放偷看的方法? 凝结水回收器生产厂家? 个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 脚为什么有味道? 右划侧边导航菜单和 iOS 7 的返回手势冲突,各个 iOS 应用怎么解决 脚臭的出现和什么原因有关?如何能够有效缓解脚上的“异味”? 男生夏天适合什么发型,这几款男士短发发型排名最高 夏天男孩子剪什么发型好看 苹果手机解锁id密码 ios右滑返回怎么设置 夏天到了,帮我找一些好看的中短发型(男), 高分。 男人夏天理发时一般把头发理成什么样子比较合适? 苹果xsmax从屏幕左边边缘往右滑可以返回但是右手操作太麻烦了 有什么办法可以从右往左滑返回上一层? 男生夏天该留什么发型,可以凸显出痞气? “iphone7 plus”如何解锁ID密码? 苹果ios14怎么返回上一级左上角的返回没有了? 夏天到了,男生应该留哪种发型既清爽又不会太热? 大家觉得男生夏天应该理什么样的发型? 夏天时男生有什么帅气又凉快的发型推荐? 华为mate,系列,p系列和nova系列哪个好? 男生夏季适合留哪些发型? 男生剪什么发型好看 夏季 计算机处理自然语言有几个环节?它们各自的主要作用是什么? 如何去除眼袋和黑眼圈呢? 为什么每天都按时洗脚,但是脚还是会有很大的异味? 怎么才能有效去掉眼袋和黑眼圈呢? 为什么有些人的脚会有脚臭味儿,这味道究竟是怎么来的? 脚丫子臭是因为什么?那味道是什么气体的味道啊? 怎样去除眼袋和黑眼圈? 怎么样去除眼袋和黑眼圈? 是什么原因导致的脚臭呢? 为什么人的脚会臭? 脚气味道大怎么办? 超级有趣搞笑的宠物名字有哪些? 有创意宠物名字有什么? 捶腿可以瘦腿吗? 经常敲打大腿能瘦吗? 经常用手敲打腿,能达到瘦腿的效果吗? 经常拍打腿部是否可以减肥? 敲腿真的可以瘦腿吗? 敲打大腿两侧真的能瘦大腿吗 每天敲大腿能瘦吗 经常敲打大腿小腿会瘦吗