iOS 中导航控制器全屏向右滑动返回上一界面

在iOS中,导航控制器默认就自带了侧滑功能,当用户在界面的左边(左边边缘)滑动的时候,才会有侧滑功能。但是我们往往在开发的过程中需要在屏幕的任意位置滑动,都需要返回到上一个界面。

多说无意,直接看代码:

效果图部分:

代码部分(第二个界面):

#import "CJSecondViewController.h"

@interface CJSecondViewController ()<UIGestureRecognizerDelegate>

@end

@implementation CJSecondViewController

- (void)viewDidLoad {

[super viewDidLoad];

NSLog(@"%@",self.navigationController.interactivePopGestureRecognizer);

// 获取系统自带滑动手势的target对象

id target = self.navigationController.interactivePopGestureRecognizer.delegate;

// 创建全屏滑动手势,调用系统自带滑动手势的target的action方法

UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];

// 设置手势代理,拦截手势触发

pan.delegate = self;

// 给导航控制器的view添加全屏滑动手势

[self.view addGestureRecognizer:pan];

// 禁止使用系统自带的滑动手势

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

// Do any additional setup after loading the view.

self.view.backgroundColor = [UIColor whiteColor];

self.title = @"图片展示";

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(50, 200, 200, 200)];

imageView.image = [UIImage imageNamed:@"4.jpg"];

[self.view addSubview:imageView];

}

// 什么时候调用:每次触发手势之前都会询问下代理,是否触发。

// 作用:拦截手势触发

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{

// 注意:只有非根控制器才有滑动返回功能,根控制器没有。

// 判断导航控制器是否只有一个子控制器,如果只有一个子控制器,肯定是根控制器

if (self.childViewControllers.count == 1) {

// 表示用户在根控制器界面,就不需要触发滑动手势,

return NO;

}

return YES;

}

@end

具体原因和详情信息请继续查看:http://www.cocoachina.com/ios/20150811/12897.html

时间: 2024-07-28 13:37:23

iOS 中导航控制器全屏向右滑动返回上一界面的相关文章

iOS开发——实用技术OC篇&amp;8行代码教你搞定导航控制器全屏滑动返回效果

8行代码教你搞定导航控制器全屏滑动返回效果 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view

8行代码教你搞定导航控制器全屏滑动返回效果

http://www.cocoachina.com/ios/20150811/12897.html 作者:@吖了个峥授权本站转载 前言 此次文章,讲述的是导航控制器全屏滑动返回效果,而且代码量非常少,10行内搞定. 效果如图: 如果喜欢我的文章,可以关注我,也可以来小码哥,了解下我们的iOS培训课程.陆续还会有更新ing.... 一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左

ios 8行代码教你搞定导航控制器全屏滑动返回效果

一.自定义导航控制器 目的:以后需要使用全屏滑动返回功能,就使用自己定义的导航控制器. 二.分析导航控制器侧滑功能 效果:导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能. 系统自带的侧滑效果: 分析: 1.导航控制器的view自带了滑动手势,只不过手势的触发范围只能在左边. 2.当用户在界面左边拖动,就会触发滑动手势方法,并且有滑动返回功能,说明系统手势触发的方法已经实现了滑动返回功能. 3.为什么说系统手势触发的方法已经实现了滑动返回功能? 原因: 创建滑动手势对象

iOSUI-导航控制器全屏滑动返回效果

导航控制器默认自带了侧滑功能,当用户在界面的左边滑动的时候,就会有侧滑功能.但是如何实现全屏滑动返回效果? 分析: 第一步分析: 1.导航控制器的view自带了滑动手势,只不过手势的触发范围只能在左边. 2.当用户在界面左边拖动,就会触发滑动手势方法,并且有滑动返回功能,说明系统手势触发的方法已经实现了滑动返回功能. 3.为什么说系统手势触发的方法已经实现了滑动返回功能? 原因: 创建滑动手势对象的时候,需要绑定监听者,当触发手势的时候会调用target的action. UIPanGesture

自定义导航全屏滑动返回上一页

- (void)viewDidLoad { [super viewDidLoad]; // 获取系统自带滑动手势的target对象 id target = self.interactivePopGestureRecognizer.delegate; // 创建全屏滑动手势,调用系统自带滑动手势的target的action方法 UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target ac

一个丝滑的全屏滑动返回手势

一个丝滑的全屏滑动返回手势 全屏返回手势 自 iOS7 之后,Apple 增加了屏幕边缘右划返回交互的支持,再配合上 UINavigationController 的交互式动画,pop 到上一级页面的操作变的非常顺畅和丝滑,从此,我很少再使用点击左上角导航栏上的返回按钮的方式返回了,因为这对单手操作十分不友好:如果一个 App 居然胆敢不支持滑动返回,那离被卸载就不远了. 说到全屏返回手势,首先我感觉这件事本身可能就有问题,毕竟有点反苹果官方的交互,让用户从任意的地方都能够滑 动返回这个交互在国

IOS UINavigationController 导航控制器

/** 导航控制器掌握: 1.创建导航控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 2.zhan (zhan 中所有的子控制器) self.navigationController.viewControllers; 3.将控制器压入zhan 中 [self.navigationController pushView

WebView中的视频全屏的相关操作

最近工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,但是用起来不是那么简单的控件. 首先你肯定要定义,初始化一个webview,其实网上的例子很多,我这里就简单的把一些WebView 中可能会用到的的很重要的属性以及支持全屏播放视频该怎么实现的代码粘出来,直接放到项目中去就行了 <span style="white-space:pre"></span><pre name="co

ios中创建控制器的几种方式

1.通过storyboard创建: (1)先加载storyboard文件: UIStoryboard * storyboard = [UIStoryboard storyboardWithName:@"Test"  bundle:nil]; (2) 初始化storyboard中的控制器: ①初始化"初始控制器":HLViewController * hl = [storyboard instantiateInitialViewController]; ②通过标识初始