【问题标题】:Screen edge gesture when using UISplitViewController with hidden navigation bar使用带有隐藏导航栏的 UISplitViewController 时的屏幕边缘手势
【发布时间】:2021-05-30 00:00:05
【问题描述】:

在 iPhone 应用程序中,我们可以隐藏导航栏。默认情况下,调用[self.navigationController setNavigationBarHidden:YES animated:YES] 来隐藏导航栏会停止屏幕边缘手势识别器self.navigationController.interactivePopGestureRecognizer 的工作,但在过去我可以通过将其delegate 设置为我自己的(隐藏栏时)来恢复此功能这样做:

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

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return ![otherGestureRecognizer isKindOfClass:[UIScreenEdgePanGestureRecognizer class]];
}

但是,现在该应用正在使用UISplitViewController,这不起作用。

目前尚不清楚拆分视图控制器是使用自己的手势识别器还是其他问题。我一直无法弄清楚如何使它工作。

我找不到关于此的任何其他讨论。我发现的最新帖子已有多年历史,例如this onethis onethis one

我错过了什么?当导航栏隐藏时,如何让屏幕边缘交互手势与UISplitViewController 一起使用?

【问题讨论】:

    标签: ios uinavigationcontroller uisplitviewcontroller


    【解决方案1】:

    谢谢橡皮鸭。 ?

    当然,发布后不久,我就找到了答案:在紧凑的布局中,例如在 iPhone 上,UISplitViewController 有一个 UINavigationController 来管理层次结构,而且细节视图控制器有自己的UINavigationController

    所以解决方案是使用外部导航控制器(具有多个视图控制器)的interactivePopGestureRecognizer,而不是内部导航控制器(只有一个),因此:

    @objc var parentNavigationController: UINavigationController? {
        return navigationController?.parent as? UINavigationController
    }
    

    我希望这可以帮助其他遇到此问题的人。

    【讨论】:

      猜你喜欢
      • 2020-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 2019-01-22
      相关资源
      最近更新 更多