UINavigationController interactivePopGestureRecognizer在iOS7中工作exception

在iOS7中,我们有一个新的“从左到右”的手势,这是一个非常有用的function,但现在我有一个问题。

我使用此代码来定制UINavigationBar的后退button。

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:view];

但是这将禁用“从左向右滑动”手势,所以我使用以下代码保持手势启用。

self.navigationController.interactivePopGestureRecognizer.delegate = self

然后,我发现手势工作exception,如果当前ViewController有一个tableView,当tableView滚动时,手势不会被触发。 现在手势不能轻易触发,有什么方法可以解决吗?

这个代码对我来说可能会很好。

 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return YES; } - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return [gestureRecognizer isKindOfClass:UIScreenEdgePanGestureRecognizer.class]; } 

interactivePopGestureRecognizer.delegate设置为self只是第一步。 第二步是实施

 -(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { return ![otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class]; } 

当交互式popup窗口正在进行时,需要对平移手势识别器进行testing以阻止滚动或表格视图的垂直滚动。

添加类控制器“UIGestureRecognizerDelegate”

在ViewDidApper中添加

 override func viewDidAppear(animated: Bool) { super.viewDidAppear(animated) self.navigationController?.interactivePopGestureRecognizer.delegate = self } 

=)

魏贴的解决scheme,不适合我。 我的屏幕冻结了,放弃了任何手势的认可。

我现在使用Arkadiusz Holko的AHKNavigationController http://holko.pl/ios/2014/04/06/interactive-pop-gesture/

花了我30秒,通过CocoaPods获得,另外30秒,通过故事板设置为我的NavigatonController的自定义类。