(导航控制器view)全屏幕滑动实现pop效果
看到现在app 中越来越流行的手势滑动实现pop效果,心里很是痒痒跃跃欲试,经过多方查看资料,终于在简书上找到了详细的实现方案:
轻松学习之二——iOS利用Runtime自定义控制器POP手势动画
经过修改实现了简单的(自定义导航控制器)手势滑动实现pop返回效果:
1.先打印了导航控制器的interactivePopGestureRecognizer,log结果如下:
<UIScreenEdgePanGestureRecognizer: 0x7fe5f1579ce0; state = Possible; delaysTouchesBegan = YES; view = <UILayoutContainerView 0x7fe5f1567ea0>; target= <(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition
2.自定义UIPanGestureRecognizer,移花接木到该手势的target和action;action好处理,但是target的活得用runtime时可以拿到,但过程略复杂,
打印interactivePopGestureRecognizer.delegate;发现正好也是_UINavigationInteractiveTransition,所以问题解决:
id target = self.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc] initWithTarget:target action:NSSelectorFromString(@"handleNavigationTransition:")];
3.测试发现如果当前导航控制器的自控制器只有一个的时候,拖拽手势会发生bug,这时就需要腹泻pan手势的
-(BOOL)gestureRecognizerShouldBegin:来决定手势操作是否起作用:
-(BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
return self.childViewControllers.count==1?NO :YES;
}
4.附上github上forkingdog的更加完美的分类实现方法:
https://github.com/forkingdog/UITableView-FDTemplateLayoutCell
TIP:相关bug小提示,如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于
self.interactivePopGestureRecognizer.delegate被滞空的原因
(导航控制器view)全屏幕滑动实现pop效果的更多相关文章
- iOS开发——实用技术OC篇&8行代码教你搞定导航控制器全屏滑动返回效果
		
8行代码教你搞定导航控制器全屏滑动返回效果 前言 如果自定了导航控制器的自控制器的leftBarButtonItem,可能会引发边缘滑动pop效果的失灵,是由于 self.interactivePop ...
 - UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
		
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
 - iOS开发-21UINavigationController导航控制器初始化 导航控制器栈的push和pop跳转理解
		
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
 - 【iOS开发-21】UINavigationController导航控制器初始化,导航控制器栈的push和pop跳转理解
		
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界 ...
 - 导航控制器生产,push,pop,root,index
		
AppDelegate.m #import "FirstViewController.h" @implementation AppDelegate - (BOOL)applicat ...
 - AJ学IOS 之微博项目实战(6)导航控制器NavigationController 的滑动回退功能实现
		
AJ分享,必须精品 一:效果 第二篇里面写了怎样自定义navigation实现自定义的导航控制器左右按钮样式,但是当我们自己实现后,系统自带的向右边滑动来实现回退的功能就不能用了. 这里主要实现滑动回 ...
 - iOS 导航控制器如何随意push和pop    想要在 A push B 后, B 在push 到 D ,然后从 D pop 到 C ,在从 C pop 的A
		
这里主要是对导航控制器的viewControllerss这个数组进行操作,因为push操作和pop操作都是根据这个数据去切换控制器或者在这个数组里增加控制器的,所以只要改变这个子控制器数据就能自定义切 ...
 - ABC定制视图导航控制器
		
ABCustomUINavigationController ABC定制视图导航控制器 Subclass of UINavigationController for overwriting ...
 - iOS开发——UI进阶篇(十)导航控制器、微博详情页、控制器的View的生命周期
		
一.导航控制器出栈 1.initWithRootViewController本质 UIViewController *vc = [[OneViewController alloc] init]; // ...
 
随机推荐
- WebApi官网学习记录---webapi中controller与action的选择
			
如果framework找到一个匹配的URI,创建一个包含占位符值的字典,key就是这些占位符(不包括大括号),value来自URI或者默认值,这个字典存储在IHttpRouteData对象中.默认值可 ...
 - Volley的三种基本用法StringRequest的Get和post用法以及JsonObjectRequest
			
首先做出整个应用的全局请求队列 package com.qg.lizhanqi.myvolleydemo; import android.app.Application; import com.and ...
 - ResourceBundle读取中文properties文件问题
			
昨天遇到一个问题,用ResourceBundle读取中文字符串资源文件时,死活读不出来. 一开始以为是文件路径不对,后来发现如果默认properties文件时英文就没问题.我的项目代码是在src目录下 ...
 - eclipse中Java代码导入包,出现main.java前缀
			
1.工程右击,按照下图指示的选择 2.按照下图,进行删除选中项,然后点击OK保存
 - 写一个Windows上的守护进程(6)Windows服务
			
写一个Windows上的守护进程(6)Windows服务 守护进程因为要开机启动,还要高权限,所以我就把它做成Windows服务了. 关于Windows服务的官方文档,大家可以看https://msd ...
 - Ext JS中Button的一般使用
			
Ext JS中Button按钮的显示,以及按钮的部分事件 一.属性 renderTo:将当前对象所生成的HTML对象存放在指定的对象中 text:得到按钮名称 minWidth:按钮最小宽度 hidd ...
 - Servlet开发(二)
			
一.ServletConfig讲解 1.1.配置Servlet初始化参数 在Servlet的配置文件web.xml中,可以使用一个或多个<init-param>标签为servlet配置一些 ...
 - XMLHttpRequest基础知识
			
XMLHttpRequest 发送请求的两个重要方法:open(method,url,async)——参数:请求方式.请求地址.请求同步/异步:send(string)——参数:使用POST方式时,填 ...
 - 用CSS截断字符串
			
方法一: <div style="width:300px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;&q ...
 - TeXLive安装过程
			
Linux系统下TeXLive2016安装教程:http://www.linuxidc.com/Linux/2016-08/133913.htm 安装完成后,在当前用户的 ~/.bashrc 中加入如 ...