【问题标题】:Black area with interactivePopGestureRecognizer when popping a view controller with visible nav bar to a one with hidden nav bar将带有可见导航栏的视图控制器弹出到带有隐藏导航栏的视图控制器时,带有 interactivePopGestureRecognizer 的黑色区域
【发布时间】:2014-03-16 20:00:17
【问题描述】:

我有这个 ViewController #1,它是导航控制器的根视图控制器,并且有

self.navigationController.navigationBarHidden = YES;

ViewController #1 告诉它的导航控制器推送 ViewController #2,它有

self.navigationController.navigationBarHidden = NO;

当我想通过从屏幕左侧滑动从 ViewController #2 返回到 ViewController #1 时,我看到我的视图是我在此处附加的屏幕截图。这是在我将手指向右移动时捕捉到的,因此当我不断向右滑动时,右上角的黑色区域越来越小,直到 ViewController #1 覆盖所有屏幕区域。

我猜这是由两个视图控制器之间的隐藏/可见导航栏差异引起的。

我想知道是否有可能摆脱这个黑色区域。

【问题讨论】:

    标签: ios iphone uinavigationcontroller interactivepopgesture


    【解决方案1】:

    正如HoanNguyen 所讨论的那样,我已经将代码隐藏/显示在 viewWillAppear/Disappear 上的导航栏,但最后我发现诀窍是设置动画值。很奇怪,但这解决了我的问题,黑色区域现在消失了:

    - (void)viewWillAppear:(BOOL)animated {
        [super viewWillAppear:animated];
        [self.navigationController setNavigationBarHidden:self.shouldHideNavBar animated:animated];
    }
    
    - (void)viewWillDisappear:(BOOL)animated {
        [super viewWillDisappear:animated];
        [self.navigationController setNavigationBarHidden:!self.shouldHideNavBar animated:animated];
    }
    

    【讨论】:

      【解决方案2】:

      您应该将代码集隐藏/显示导航放在 viewWillAppear 或 viewDidAppear 中。

      【讨论】:

      • 嗯...我已经创建了一个测试项目,它运行良好。所以我认为你的代码在某个地方影响了这个视图。
      • 嘿 Hoan,请在下面查看我的答案。我终于弄明白了!感谢您的回答!
      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-15
      • 2018-04-19
      • 1970-01-01
      相关资源
      最近更新 更多