Swift - 全屏添加pop手势

现在众多APP中都有全屏pop手势
实现这个目前只想到两种方式,如有其他方式请留言告知,相互学习

第一种

根据需求,我们大部分会第一时间想到,在Controller的View中添加手势,然后根据侧滑动作,添加pop当前页面的方法
(但是这种方式实现起来相对麻烦,并且不太好处理)

第二种

根据iOS运行时的特性,把原本左侧边侧滑pop事件,添加到View中,来实现全局pop
(此方式实现较容易,所以选择第二种方式)

具体实现

1.创建自定义UINavigationController
2.获取手势及view

        //获取系统手势
        guard let systemGes = interactivePopGestureRecognizer else {
            return
        }
        //获取手势添加到view中
        guard let gesView = systemGes.view else {
            return
        }

3.获取属性名称

        //获取target/action
        //利用运行时机制获取所有属性名称
        /*
        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!))
        }
         */

4.根据属性获取target与action

        let targets = systemGes.value(forKey: "_targets") as? [NSObject]
        guard let tagetObjc = targets?.first else {
            return
        }
        print(tagetObjc)
        //取出action
        guard let target = tagetObjc.value(forKey: "target") else {
            return
        }
        let action = Selector(("handleNavigationTransition:"))

其中print(tagetObjc)

(action=handleNavigationTransition:, target=<_UINavigationInteractiveTransition 0x7f92e3f16b20>)

5.创建自己的手势

        let panGes = UIPanGestureRecognizer()
        gesView.addGestureRecognizer(panGes)
        panGes.addTarget(target, action: action)

这样就完成全局的pop手势了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,055评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,559评论 4 61
  • 流程控制语句 if语句可以单独使用,也可以和多个else连续使用 switch case while循环 例如: ...
    李诺哦阅读 2,361评论 0 0
  • 好吧,一晚连写三文,因为我憋的太久了吧,前几天的低谷期好像慢慢的过去了。 其实从前天晚上那节OH卡课以后,丛对我的...
    蜕变的林林阅读 3,034评论 15 4
  • 文/牵着影子去流浪(第九十二首) 昨夜 大风呼啸,刮了半夜 骤雨,时下时歇 湮灭了蛙鼓和蝉鸣,湮灭了 流萤的小灯笼...
    老影子阅读 1,657评论 0 2

友情链接更多精彩内容