美文网首页
swift实现全屏滑动返回

swift实现全屏滑动返回

作者: 王_凯 | 来源:发表于2017-06-01 14:28 被阅读0次
import UIKit

class CustomNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //1.获取系统的Pop手势
        guard let systemGes = interactivePopGestureRecognizer else { return }
        
        //2.获取手势添加到的View中
        guard  let gesView = systemGes.view else { return }
        
        //3.获取target/action
        //3.1利用运行时机制查看所有的属性名称
//        var count : UInt32 = 0
//        let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!
//        for i in 0..<count {
//            let ivar = ivars[Int(i)]
//            let name = ivar_getName(ivar)
//            print(String(cString: name!))
//        }
        let targets = systemGes.value(forKey: "_targets") as? [NSObject]
        guard let targetObjc = targets?.first else { return }
        
        //取出target
        guard let target = targetObjc.value(forKey: "target") else { return }
        
        //取出action
//        guard let action = targetObjc.value(forKey: "action") as? Selector else { return }
        let action = Selector(("handleNavigationTransition:"))
        
        
        // 创建自己的pan手势
        let panGes = UIPanGestureRecognizer()
        gesView.addGestureRecognizer(panGes)
        panGes.addTarget(target, action: action)
    }

    override func pushViewController(_ viewController: UIViewController, animated: Bool) {
        viewController.hidesBottomBarWhenPushed = true
        super.pushViewController(viewController, animated: animated)
        
    }
}

相关文章

网友评论

      本文标题:swift实现全屏滑动返回

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