【问题标题】:Back swipe gesture is not work when I add the leftBarButtonItem当我添加 leftBarButtonItem 时,向后滑动手势不起作用
【发布时间】:2014-03-06 11:34:27
【问题描述】:

这里是ViewControllerAViewControllerB,在ViewControllerBleftBarButtonItem设置如下:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Back" style:UIBarButtonItemStylePlain target:self action:@selector(backBtnClicked:)];

设置leftBarButtonItem后,后退手势无效。是否可以保持滑动手势?

【问题讨论】:

    标签: objective-c ios7 uibarbuttonitem backbarbuttonitem


    【解决方案1】:

    因为您更改了左侧栏按钮项,所以您告诉导航控制器停止管理用户可以采取的基于导航的后退操作。

    要修复它,您可以使用以下命令告诉导航控制器继续接受当前视图控制器上的这些手势:

    self.navigationController.interactivePopGestureRecognizer.delegate = self;
    

    如果您的视图控制器位于self

    UIViewController 私下实现了UIGestureRecognizerDelegate,因此您会收到警告,但您可以通过将协议一致性 (<UIGestureRecognizerDelegate>) 添加到您的标头或类扩展来缓解这种情况。

    【讨论】:

    • 我听说这有问题,但乍一看似乎可行。有人使用这个遇到奇怪的问题吗?
    • 我发现了一个关于潜在问题的参考:具体的问题是,如果您在另一个弹出动画已经发生的情况下尝试滑动,​​则会导致您无法一次执行多个转换的异常.建议的解决方案是制作一个自定义 UINavigationController,其中导航控制器本身是interactionPopGestureRecognizer 委托,并且在另一个导航转换正在进行时它将忽略滑动。我更喜欢 UINavigationBar setBackIndicatorImage 为后退按钮设置自定义图像。
    【解决方案2】:

    尝试将 interactivePopGestureRecognizer 设置为 nil

    override func viewDidLoad() {
        super.viewDidLoad()
        self.interactivePopGestureRecognizer!.delegate = nil;
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多