在 UIView 上添加返回上一级操作界面(手势) | 您所在的位置:网站首页 › ipad手势操作返回上一级界面 › 在 UIView 上添加返回上一级操作界面(手势) |
系统:手势 ——> 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 实验室设备网 版权所有 |