自定义
NavigationController继承于系统UINavigationController导入头文件
#import <objc/runtime.h>-
NavigationController中实现如下方法// OBJC - (void)viewDidLoad { [super viewDidLoad]; // 取出系统pop手势的`target`和`action` NSArray *targetObjs = [self.interactivePopGestureRecognizer valueForKey:@"_targets"]; id target = [targetObjs.firstObject valueForKey:@"target"]; SEL sel = NSSelectorFromString(@"handleNavigationTransition:"); UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:target action:sel]; [self.view addGestureRecognizer:panGesture]; } // swift override func viewDidLoad() { super.viewDidLoad() // 获取系统pop手势的target和action guard let targets = interactivePopGestureRecognizer?.value(forKey: "_targets") as? [NSObject] else { return } let targetObj = targets.first let target = targetObj?.value(forKey: "target") let action = Selector(("handleNavigationTransition:")) let panGesture = UIPanGestureRecognizer(target: target, action: action) view.addGestureRecognizer(panGesture) } -
runtime的使用- OBJC unsigned int outCount = 0; Ivar *ivars = class_copyIvarList([UIGestureRecognizer class], &outCount); unsigned int outCountMethod = 0; Method *methods = class_copyMethodList([UIGestureRecognizer class], &outCountMethod); for (unsigned int i = 0; i < outCount; i++) { Ivar ivar = ivars[i]; NSString *key = [NSString stringWithUTF8String:ivar_getName(ivar)]; NSLog(@"%@", key); } NSLog(@"=========="); for (unsigned int i = 0; i < outCountMethod; i++) { Method method = methods[i]; SEL sel = method_getName(method); NSString *selName = NSStringFromSelector(sel); NSLog(@"%@", selName); } - swift // 获取 UIGestureRecognizer 的属性列表 var count: UInt32 = 0 let ivars = class_copyIvarList(UIGestureRecognizer.self, &count)! for i in 0..<count { let nameP = ivar_getName(ivars[Int(i)])! let name = String(cString: nameP) print(name) }
runtime实现全屏pop手势
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 运行时(runtime)简单来说就是我们通常用swift或oc编写的代码在运行的时候都会通过运行时转换成底层的C(...
- Runtime是一套比较底层的纯C语言API,包含了很多底层的C语言API。在我们平时编写的OC代码中,程序运行时...