如何从TabBar控制器禁用滑动手势识别器

时间:2015-10-20 08:26:09

标签: ios objective-c iphone uitabbarcontroller uiswipegesturerecognizer

我正在使用11个Tab项目。在4个标签项之后,它将显示更多菜单,当我点击“更多”按钮时,将显示剩余标签列表 - 这是它应该如何工作。

我的问题是当我从屏幕左侧滑动时,这个“更多”标签列表正在填充。我怎么能避免这个?

1 个答案:

答案 0 :(得分:1)

您可以在标签栏控制器中迭代手势并禁用滑动

    for gesture in tabBarController.view.gestureRecognizers! {
        if let swipeGesture = gesture as? UISwipeGestureRecognizer {
            if (swipeGesture.direction == .Left) {
                swipeGesture.enabled = false
                print("disabled")
            }
        }
    }

此处tabBarController是标签栏控制器的有效实例。

您可能需要对.Left vs .Right进行一些试验和错误,并且仅在控制器的视图或其中一个子视图上运行此操作,但这肯定会禁用此操作

此外,虽然不太可能,但要注意同一方向的多次滑动手势,如果有,请确保仅禁用相关的手势。

在ObjC中:

for (UIGestureRecognizer *gesture in tabBarController.view.gestureRecognizers) {
    if([gesture isKindOfClass:[UISwipeGestureRecognizer class]]) {
        if(((UISwipeGestureRecognizer *)gesture).direction == UISwipeGestureRecognizerDirectionLeft) {
            gesture.enabled = false;
        }
    }
}