ios - 如何从 TabBar Controller 禁用滑动手势识别器

标签 ios objective-c iphone uitabbarcontroller uiswipegesturerecognizer

我正在使用 11 个选项卡项。在 4 个选项卡项之后,它将显示更多菜单,当我单击“更多”按钮时,将显示剩余的选项卡列表 - 这应该是这样工作的。

我的问题是,当我从屏幕左侧滑动时,会填充此“更多”选项卡列表。我怎样才能避免这种情况?

最佳答案

您可以在标签栏 Controller 中遍历手势并禁用滑动

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

此处 tabBarController 是标签栏 Controller 的有效实例。

您可能需要对 .Left.Right 进行一些试验和错误,并仅在 Controller 的 View 或其中一个 subview 上运行它,但这应该绝对禁用该手势。

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

在 ObjC 中:

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

关于ios - 如何从 TabBar Controller 禁用滑动手势识别器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231619/

相关文章:

ios - XCode 8:缺少“自动管理签名”选项

ios - 自定义声音在 unnotificationrequest ios 10 objC 中不起作用

objective-c - 在触摸 iOS 7 之前,后退按钮的背景图像不会出现

iphone - 在 iPhone 编程中从字符串中获取数字

iphone - iPhone 应用商店的图像大小

iOS - 实现类似 iMessage 的滚动效果

iphone - 更改了 Xcode 中的目标名称现在它运行黑屏

android - 修复了安卓和苹果设备的背景

iphone - 如何获取 iPhone 的联系人详细信息并制作该联系人的 CSV 文件

iphone - 如何在 UIBezierPath 上获取边框