自定义pop返回手势 利用runtime
2015-09-14 18:35
197 查看
参考了有其他大神的demo。然后自己又写一个来的。
首先继承一个UINavigationController。
接下来直接上代码
结合runtime的方法。
首先继承一个UINavigationController。
接下来直接上代码
结合runtime的方法。
- (void)viewDidLoad { [super viewDidLoad]; UIGestureRecognizer *recongnizer = self.interactivePopGestureRecognizer; recongnizer.enabled = NO; UIView *gestureView = recongnizer.view; /** * 创建拖动手势 */ UIPanGestureRecognizer *popRecognizer = [[UIPanGestureRecognizer alloc] init]; popRecognizer.delegate = self; popRecognizer.maximumNumberOfTouches = 1; [gestureView addGestureRecognizer:popRecognizer]; u_int count; Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &count); for (int i =0; i<count; i++) { //获取对应的变量 Ivar ivar = ivars[i]; //获取变量的名字 const char *ivarName = ivar_getName(ivar); //获取对应变量的类型 //const char *ivarEncodingName = ivar_getTypeEncoding(ivar); //通过Kvc获取这些 if ([[NSString stringWithCString:ivarName encoding:NSUTF8StringEncoding] isEqualToString:@"_targets"]) { NSMutableArray *_targetsArray= [recongnizer valueForKey:@"_targets"]; //获取对象 id getRecongnizerTarget = _targetsArray[0]; id uinavigationInteractiveTransition = [getRecongnizerTarget valueForKey:@"target"]; SEL handleTransition = NSSelectorFromString(@"handleNavigationTransition:"); //创建手势 跟系统一模一样的手势 UIPanGestureRecognizer *pangesture =[[UIPanGestureRecognizer alloc]initWithTarget:uinavigationInteractiveTransition action:handleTransition]; [self.view addGestureRecognizer:pangesture]; } } }
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { /** * 1.当这个控制器是只有一个时候不执行手势。 * 2.当这push或者pop时候 不执行手势。 */ return self.viewControllers.count != 1 && ![[self valueForKey:@"_isTransitioning"] boolValue]; }
相关文章推荐
- OpenCV中二维点求取进行仿射和透视变换之后的坐标点方法
- Linux下实用的JAVA内存泄露监控命令
- 应用 Valgrind 发现 Linux 程序的内存问题
- 如何在linux下检测内存泄漏
- Linux多线程编程
- Linux下的Socket编程
- 为bash添加内置命令(built-in)的方法
- linux常用的makefile模版编写
- linux下C程序printf没有立即输出的问题及我的Makefile文件
- Nginx服务安装配置
- 智能终端双处理器架构
- linux常用命令(27):tar命令
- Fast-cgi cgi nginx php-fpm 的关系
- Android开发时你遇到过什么相见恨晚的工具或网站?
- war包部署到Tomcat服务器
- Ubuntu使用SHA256检验iso镜像完整性的实例
- Citrix NetScaler铂金版外网使用Receiver登陆XenDesktop失败
- MTK android代码架构
- nutch2.3 hadoop2.6.0 hbase0.98.8 分布式爬虫NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfigurati
- 如何检测Linux系统已下载文件的完整性