网络编程

当前位置:永利402游戏网站-永利402com官方网站 > 网络编程 > iOS开发之自定义导航栏返回按钮右滑返回手势失

iOS开发之自定义导航栏返回按钮右滑返回手势失

来源:http://www.xtcsyb.com 作者:永利402游戏网站-永利402com官方网站 时间:2019-09-17 08:12

前言

先扯一会儿犊子

正文简单介绍见题知意 不再加以解释

作者信任针对每三个iOS开采者来讲,除了根视图调控器外,全体的分界面通过导航栏push千古的界面都以能够透过右滑来回到上贰个分界面,其实,在众多施用和APP中,客商已经习贯了那么些意义,但是,作为开拓者的大家,也并不曾为此做些什么,因为大家在创设项目时,苹果集团已经为大家都办好了,那么,大家那期就来聊一聊那系统自带的右滑方法以及哪些修改和拦截这些不被器重的方法,

当我们使用代码也许用storyboard来创造七个新的调整器的时候,大家非常少注意导航栏的leftItem~因为健康状态下, push 到下多少个分界面包车型大巴leftItem正是上一个分界面包车型地铁 self.title ,并且它也正是三个再次来到的功用,所以,大家很少去在意这一个,但当大家有些要求,必要自定义leftItem的时候~那么难题就来了,

  • 标题一:怎么自定义leftItem
  • 标题二:为啥系统自带的右滑返还击势失效
  • 标题三:怎么消除这么些失效难点

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;

//按钮点击事件 返回上一个界面- backLastView{ [self.navigationController popViewControllerAnimated:YES];}

急需静心的是xcode自动从6.0之后,leftItem距左显示屏边距有十四个像素点,那样会形成在视觉上会感到有一些偏右,不算美丽,可是对于大多数魔羯座的程序猿来讲,这断定是不能够令人去接受的,化解办法有广大,在那边提供叁个无比有利的不二诀窍,设置一下开关的contentEdgeInsets``imageEdgeInsets质量就可以,如:leftButton.contentEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0);

2.怎么系统自带的右滑返还击势失效那也是自家一向所关切的主题材料,还希望知道的能够私信小编QQ:2638006336

3.怎么化解这些失效难题其实很简短很简短~只需求充裕底下这一句代码就可以self.navigationController.interactivePopGestureRecognizer.delegate = self;新生游人如织网民举报这里依旧稍微难题的,具体小说已经更新,能够参考那篇小说 可能直接关系本人QQ也能够 *********

骨子里到此地,难点应有都化解了,不过,究竟右滑返反扑势只可以接近显示屏侧面缘才具选取,我们什么样通过调用系统方法来兑未来总体荧屏右滑就可以兑现重返效能呢step1:须要获得系统自带滑动手势的target对象id target = self.navigationController.interactivePopGestureRecognizer.delegate;step2:创造全屏滑动手势~调用系统自带滑入手势的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;step6:还记得刚刚安装的代办吗?下边方法什么日期调用?在历次触发手势此前都会理解下代理,是还是不是接触。以此办法便是阻挠手势触发的方法.- gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{}return NO;则无需触发滑入手势return YES;则必要接触滑入手势

好啊好啊,大致了,越来越多内容关切笨笨编制程序其余简书,这里有您将会越发出彩~

骨子里只需在导航栏调整器中走入上面这句代码就OK了

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;则须要接触滑入手势

}

OK 基本正是这些样子了

本文由永利402游戏网站-永利402com官方网站发布于网络编程,转载请注明出处:iOS开发之自定义导航栏返回按钮右滑返回手势失

关键词:

上一篇:iOS 消除button重复点击难点

下一篇:没有了