Swift全屏滑動返回

weixin_34037977發表於2019-01-03

更新:偶爾會出現button target點選無效。點選之後,沒有push到下一個頁面,同時整個頁面無法點選,這個時候使用向右滑動的全屏手勢,要push的頁面會從右側跟隨手勢出來,同時手勢結束的時候,push的頁面自動pop消失。


https://www.cnblogs.com/tinych/p/6927654.html

//利用執行時動態拿到系統的側滑手勢 action + target  手動建立一個全屏的pan手勢,響應事件用系統的
        //拿到interactivePopGestureRecognizer這個物件裡面全部的屬性
        //        var count:UInt32 = 0
        //        let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!
        //        for i in 0..<count {
        //             //拿到ivar指標
        //            let nameP = ivar_getName(ivars[Int(i)])
        //            //根據指標找到對應的屬性的字串
        //            let name = String(cString: nameP!)
        //            print(name)
        //        }
        guard  let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as?[AnyObject] else {
            return
        }
        //拿到 action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x7ff515c0dc80>
        
        let dict = targets[0]
        //拿到action
        let target = dict.value(forKey: "target") as Any
        //通過字典無法拿到action,這裡通過Selector方法包裝action
        let action = Selector(("handleNavigationTransition:"))
        
        //拿到target action 建立pan手勢並新增到全屏view上
        let gesture = UIPanGestureRecognizer(target: target, action: action)
        view.addGestureRecognizer(gesture)

相關文章