首页 文章

如何在UINavigationBar上禁用滑动右手势?

提问于
浏览
6

当我在导航栏上从左向右滑动时,我的导航控制器会弹出一个视图控制器 . 我已经看了this question所以我知道我可以设置......

self.navigationController.interactivePopGestureRecognizer.enabled = NO;

...但它只是禁用导航栏下方视图的滑动,而不是栏本身 .

我目前的解决方案是手动找到手势并禁用它 . 哪个有效,但不确定是否有's a better way. The navigation bar doesn'似乎有像 interactivePopGestureRecognizer 这样的属性 .

// This is inside a `UINavigationController` subclass.
for (UISwipeGestureRecognizer *gr in self.navigationBar.gestureRecognizers) {
    if ([gr isKindOfClass:[UISwipeGestureRecognizer class]] && gr.direction == UISwipeGestureRecognizerDirectionRight) {
        gr.enabled = NO;
    }
}

1 回答

  • 3

    UIGestureRecognizerDelegate 有一个名为 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 的方法 . 如果您能够指出触摸的视图是否为 UINavigationBar ,则只需返回 "NO" .

    这样的喜欢

    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
        return (![[[touch view] class] isSubclassOfClass:[UIControl class]]); // UIControl is whatever as you like.
    }
    

相关问题