您的位置:首页 > 移动开发 > IOS开发

学习笔记:ios手势(滑动)返回

2015-03-03 15:09 357 查看
今天不是很忙,记一下做项目总结出来的笔记。

我现在这个项目是用storyboard布局的,和之前纯代码布局的操作完全不一样,��我也是花了很久学习自动约束。

废话不多说,进入我的笔记内容:IOS手势返回功能的加入。

我本以为storyboard上布局以后返回键是自动带滑动返回的(事实证明我很傻很天真),下面的方法是默认开启的,如果你是系统自带的返回建的话,你已经实现了滑动返回。

self.navigationController.interactivePopGestureRecognizer.enabled = YES;


但是 如果你没用系统自带的返回键的话,而是自定义了一个返回键的话,这个功能不会开启(我的没开启,我也不知道是不是我自定义的的方法不对),我研究了百度上的几个解决办法,下面一一列举:

1、不要把LeftButtonItem用作添加自定义返回按钮,而是使用

backBarButtonItem

1     UIButton *backButton = [UIButton buttonWithType:UIButtonTypeCustom];
2     //some initialize code here...
3     UIBarButtonItem *barItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
4     self.navigationItem.leftBarButtonItem = barItem;    //不可行
5     self.navigationItem.backBarButtonItem = barItem;    //滑动可行


2、有时候这样的方法会出现小问题,比如我就在执行的过程中发现了会有自定义按钮被取代变成系统自带返回的bug(至今未找到原因,希望大家帮助),因此又上网查到了这个方法,测试可行,并运用到了项目中:

首先,建立一个主viewController,在.h和.m文件中声明并实现下面的方法

`- (void)customBackBarButtonItem
{
UIImage *image = [UIImage imageNamed:@"图片名称"];

UIButton *backBtn = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 35, 35)];
[backBtn setImage:image forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(backBarButtonItemClick:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarItem = [[UIBarButtonItem alloc] initWithCustomView:backBtn];
[self.navigationItem setLeftBarButtonItem:backBarItem];
}`


实现button点击方法

1. (void)backBarButtonItemClick:(UIBarButtonItem *)barItem
{
[self.navigationController popViewControllerAnimated:YES];
}


在根viewController.m里遵守UIGestureRecognizerDelegate,并在viewdidload中写入下面代码

self.navigationController.interactivePopGestureRecognizer.delegate = self;


最后一步,在主viewController中实现下面方法

-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
if(self.navigationController.viewControllers.count ==1){
return  NO;
}
else
{
return YES;
}
}


大功告成!目前测试没有问题,以后有问题欢迎交流,我也会在项目里不断学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: