在自定义的navVC中,用kvc的方式获取到系统返回手势的target和action 赋值给自定义的pan手势 的target 和action,pan手势就实现了系统手势一样的功能
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor grayColor];
UIGestureRecognizer *gesture = self.interactivePopGestureRecognizer;
// NSLog(@"gesture: %@", gesture);
UIView *navPopView = gesture.view;
id targets = [gesture valueForKey:@"_targets"];
// NSLog(@"targets: %@", targets);
//获取手势
id targetObjc = [targets firstObject];
// NSLog(@"targetObjc: %@", targetObjc);
//获取手势的target
id target = [targetObjc valueForKey:@"target"];
// NSLog(@"target: %@", target);
//直接崩溃
{
// id action = [targetObjc valueForKey:@"action"];
// NSLog(@"action: %@", action);
}
//获取手势绑定的方法SEL
SEL sel = NSSelectorFromString(@"handleNavigationTransition:");
// NSLog(@"sel: %p", &sel);
//将系统手势返回的target和SEL绑定到自定义的pan手势上
UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:target action:sel];
[navPopView addGestureRecognizer:pan];
NSLog(@"---%s----%@", __PRETTY_FUNCTION__, [navPopView valueForKey:@"gestureRecognizers"]);
}