在 UIView 上添加返回上一级操作界面(手势) 您所在的位置:网站首页 ipad手势操作返回上一级界面 在 UIView 上添加返回上一级操作界面(手势)

在 UIView 上添加返回上一级操作界面(手势)

2024-07-04 09:59| 来源: 网络整理| 查看: 265

系统:手势 ——> target ----> action

自己创建的界面添加手势 :UIView —> 创建手势 —> target —> action

第一种方法

获取到系统的返回上一级界面的手势,添加到 UIView 上

系统的返回上一级界面的手势

属于导航控制器(NavigationController),而不是 控制器UIViewController系统有一个手势属性告诉开发者当前的手势是什么 interactivePopGestureRecognizer: 这个就是向上一级滑动的时候,用手指从界面左边边缘向右边滑动的时候,用到的一个属性。 只能系统自己用,开发者不能使用。

第二种方法

取出系统手势中的 target 和 action在自己创建的 View 上面创建一个手势,在这个手势上添加 从系统手势中取出来的 target 和 action let panGes = UIPanGestureRecognizer(target: nil, action: nil) view.addGestureRecognizer(panGes)

讲解一些 运行时方法 运行时的一些方法

步骤:

使用运行时方法获取到手势的属性class_copyIvarList(cls: AnyClass?, outCount: UnsafeMutablePointer?) cls: AnyClass? : 传 UIGestureRecognizer.selfoutCount: UnsafeMutablePointer? : 需要传入一个指针,会告诉你有多少个属性var count: UInt32 = 0写好后如下:class_copyIvarList(UIGestureRecognizer.self, &count)这样就可以拿到所有的 UIPanGestureRecognizer 属性

完整代码:

var count: UInt32 = 0 let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)! for i in 0.. 获取 系统手势打印结果 targets = Optional(( (action=handleNavigationTransition:, target=) ) ) 最外层是一个数组,因为 有多个目标 (是 targets,不是 target)所以我们可以把 targets 进行一个转换 ,转换成 NSObject 数组 as? [NSObject]数组里面存放的是对象类型 [NSObject] let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as? [NSObject]

对 targets 进行判断,如果没有值,返回 。有值,接着往下走

guard let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as? [NSObject] else { return } 从数组中把对象取出来 let targetObjc = targets[0] 打印结果 targetObjc = (action=handleNavigationTransition:, target=)

整体代码如下:(错误代码)

var count: UInt32 = 0 let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)! for i in 0..


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有