UINavigationController interactivePopGestureRecognizer在iOS7中工作异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UINavigationController interactivePopGestureRecognizer在iOS7中工作异常相关的知识,希望对你有一定的参考价值。

ios7中,我们有一个新的“向左滑动”手势,这是一个非常有用的功能,但现在我有一个问题。

我使用此代码自定义UINavigationBar中的后退按钮。

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

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

self.navigationController.interactivePopGestureRecognizer.delegate = self

然后,我发现手势工作异常,如果当前的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];
}

当交互式弹出正在进行时,需要针对平移手势识别器的测试来阻止滚动或表格视图的垂直滚动。

另一答案

添加类控制器“UIGestureRecognizerDelegate”

在ViewDidAppear中添加

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    self.navigationController?.interactivePopGestureRecognizer.delegate =  self
}

=)

以上是关于UINavigationController interactivePopGestureRecognizer在iOS7中工作异常的主要内容,如果未能解决你的问题,请参考以下文章

关闭 UINavigationController 并呈现另一个 UINavigationController

iOS:如何在现有 UINavigationController 中打开另一个 UINavigationController?

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr