禁用iOS8中的interactivePopGestureRecognizer

时间:2015-05-21 23:34:45

标签: ios xcode6

我有一个应用,我需要禁用interactivePopGestureRecognizer,因此我的自定义幻灯片菜单不显示。我想我可能已经尝试了所有在SO中提到的所有内容而没有运气。我的.h包含UIGestureRecognizerDelegate,在我的.m文件中,我有以下代码,这些代码在很多问题中都有提及。但它似乎不适用于iOS 8 (I am running 8.3)。我注意到的另一件事是委托方法gestureRecognizerShouldBegin被调用但没有效果。

有人知道或找到了解决方法吗?一如既往,感谢您的帮助。仅供参考,此代码在iOS7中运行良好。

    - (void)viewDidAppear:(BOOL)animated
    {
        [super viewDidAppear:animated];

        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.delegate = self;
        }
    }

    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.delegate = nil;
           }
    }

    - (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
    {
        return NO;
    }

2 个答案:

答案 0 :(得分:2)

我发现设置self.navigationController.interactivePopGestureRecognizer.enabled = NO适用于iOS 8.3,但仅在viewDidLayoutSubviews中执行。

通过在YES中将属性设置为viewWillDisappear来重新启用。

答案 1 :(得分:0)

我希望您在导航代理文件中使用导航控制器作为根视图控制器。

在这种情况下将此代码放在applicationdidfinishlaunching

if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}