if (self.navigationController.viewControllers.count>=1)
{
gesture = self.navigationController.interactivePopGestureRecognizer;
gesture.enabled = NO;
[self.view removeGestureRecognizer:self.popRecognizer];
_popRecognizer = [[UIPanGestureRecognizer alloc] init];
// popRecognizer.delegate = self;
_popRecognizer.maximumNumberOfTouches = 1;
[self.view addGestureRecognizer:_popRecognizer];
NSMutableArray *_targets = [gesture valueForKey:@"_targets"];
// /**
// * 获取它的唯一对象,我们知道它是一个叫UIGestureRecognizerTarget的私有类,它有一个属性叫_target
// */
id gestureRecognizerTarget = [_targets firstObject];
// /**
// * 获取_target:_UINavigationInteractiveTransition,它有一个方法叫handleNavigationTransition:
// */
id navigationInteractiveTransition = [gestureRecognizerTarget valueForKey:@"_target"];
// /**
// * 通过前面的打印,我们从控制台获取出来它的方法签名。
// */
SEL handleTransition = NSSelectorFromString(@"handleNavigationTransition:");
// /**
// * 创建一个与系统一模一样的手势,我们只把它的类改为UIPanGestureRecognizer
// */
[_popRecognizer addTarget:navigationInteractiveTransition action:handleTransition];
}
else
{
[self.view removeGestureRecognizer:_popRecognizer];
self.popRecognizer = nil;
}