全屏手势Pop回退到上控制器

2017-03-23  本文已影响24人  光彩影

import UIKit

class QSNavigationViewController: 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..<Int(count) {
            let ivar = ivars?[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
        }
        print(targetObjc.debugDescription)
        // 3.2取出target
        guard let target = targetObjc.value(forKey: "target") else {
            return
        }
        // 3.3取出Action
//        guard let action = targetObjc.value(forKey: "action") as? Selector else {
//            return
//        } //报异常
        
        let action = Selector(("handleNavigationTransition:"))
        

        // 4.创建自己的Pan手势
        let panGes = UIPanGestureRecognizer()
        gesView.addGestureRecognizer(panGes)
        panGes.addTarget(target, action: action)
        
    }
}
上一篇 下一篇

猜你喜欢

热点阅读