iOS 全屏手势POP

目的:当push到下一控制器时,里面整个界面用手势侧滑是可以返回的
步骤:1.自己写一个UINavigationController子类

import UIKit

class QNavigationController: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()

        //校验手势是否有值
        guard let interacionGes = interactivePopGestureRecognizer else {
            return
        }
        /*
        //通过运行时获取对应的手势属性
        var count : UInt32 = 0
        let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)!
        for i in 0..<count {
            let ivar = ivars[Int(i)]
            let namep = ivar_getName(ivar)
            let name = String(cString: namep!)//属性名称
            print(name)
        }
        */
        guard let values = interacionGes.value(forKeyPath: "_targets") as? [NSObject] else{
            return
        }
        
        guard let objc = values.first else {
            return
        }
        //根据KVC取出action 和target
        let target = objc.value(forKeyPath: "target")
        let action = Selector(("handleNavigationTransition:"))
        //下面是获取不到action的会奔溃
        //        let action = objc.value(forKeyPath: "action") as? Selector
        
        //创建自己的手势 将系统的手势去代替自己创建的手势
        let panGes = UIPanGestureRecognizer(target: target, action: action)
        
        view.addGestureRecognizer(panGes)
        
    }
}

2.将该UINavigationController的子类作为你的导航控制器即可

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,273评论 4 61
  • Swift版本点击这里欢迎加入QQ群交流: 594119878最新更新日期:18-09-17 About A cu...
    ylgwhyh阅读 25,617评论 7 249
  • 一、三个人的友谊,总有个人会落单 三个人的出行,总有些小路,两个人在前,一个人在后,看着两人手挽手肩并肩。 三个人...
    甘难阅读 37,703评论 116 139
  • 1、 年年都叫嚣着要成为国际大都市的武汉,只有交通情况不负众望的紧跟着一线城市的步伐。 为了避免牙签从一头青丝等到...
    暴躁杂货铺阅读 478评论 1 5
  • 它从不期待有人来走。 我是这样想的,它不像旁边的砖石,它是世上最难走的路,没有泥土能接替它,断了便是断了。它不认识...
    一旬阅读 326评论 0 0