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的自定义类。