美文网首页
Swift OC-全屏Pop手势

Swift OC-全屏Pop手势

作者: 哈哈西 | 来源:发表于2018-03-23 14:20 被阅读0次

    巧用iOS运行时特性,将原本系统中的左侧侧滑pop事件,添加到view中.源码欢迎star和关注。


    全局pop的gif图.gif

    1、Swift版本

    //在自定义的UINavigationController里面获取到系统侧滑的pop事件,然后将事件添加到view上面
        override func viewDidLoad() {
            super.viewDidLoad()
            //        var count : UInt32 = 0
            //        let ivas = class_copyIvarList(UIGestureRecognizer.self, &count)!
            //        for i in 0..<count {
            //            let nameP = ivar_getName(ivas[Int(i)])!
            //            let name = String.init(cString: nameP)
            //            print(name)
            //        }
            guard  let  targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as? [NSObject] else { return }
            let targetObj = targets[0]
            print(targetObj)
            let target = targetObj.value(forKey: "target")
            let action = Selector(("handleNavigationTransition:"))
            let panGes = UIPanGestureRecognizer.init(target: target , action:action)
            view.addGestureRecognizer(panGes)
        }
    
    

    2、OC版本

    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        UInt32 count = 0;
        Ivar *ivars = class_copyIvarList(NSClassFromString(@"UIGestureRecognizer"), &count);
        for (int i = 0; i < count; i++){
            Ivar ivar = ivars[i];
            const char *ivarName = ivar_getName(ivar);
            NSString *ivarNameCode = [NSString stringWithUTF8String:ivarName];
            NSLog(@"%@",ivarNameCode);
        }
        free(ivars);
    
        NSArray *targets = [self.interactivePopGestureRecognizer valueForKey:@"_targets"];
        NSLog(@"%@",targets[0]);
        SEL sel = NSSelectorFromString(@"handleNavigationTransition:");
        UIPanGestureRecognizer *panGes = [[UIPanGestureRecognizer alloc] initWithTarget:[targets[0] valueForKey:@"target"] action:sel];
        [self.view addGestureRecognizer:panGes];
    
    }
    
    
    

    相关文章

      网友评论

          本文标题:Swift OC-全屏Pop手势

          本文链接:https://www.haomeiwen.com/subject/sncxcftx.html