【问题标题】:Setting navigationController.hidesBarsOnSwipe = YES never shows my navbar again设置 navigationController.hidesBarsOnSwipe = YES 不再显示我的导航栏
【发布时间】:2014-10-23 08:47:07
【问题描述】:

当我设置navigationController.hidesBarOnSwipe = YES 并尝试在显示的webView 中滑动时,导航栏已隐藏,但当我尝试滑动以将其取回时,它将永远不会再次出现。

我的 ViewController 正在监听滑动事件:

[self.navigationController.barHideOnSwipeGestureRecognizer addTarget:self action:@selector(swipe:)]?

但事实上,在导航栏因为 Swipe 而隐藏之后,这个选择器就再也不会被调用了。有人实施hidesBarOnSwipe 吗?它是一个已知的错误还是按照设计它隐藏后不会显示导航栏。

之前:

之后:

【问题讨论】:

  • 我注意到,如果我有一个带有 tableView 的 UIViewController,我会遇到你所描述的问题。但是,如果我改用 UITableViewController,问题就会消失。
  • @haaakon 你能解决这个问题吗?我遇到了同样的问题,我正在使用通过代码初始化的 WKWebView,但到目前为止无法通过在视图上设置布局约束来解决它。
  • @HenrikHartz 我想我用了一个专门处理这个问题的 cocoapod。
  • 好吧,你不记得是哪个了? :)

标签: ios uinavigationcontroller uinavigationbar


【解决方案1】:

我的UIWebView 也有同样的问题,通过将我的WebView 的约束更新为相对于超级视图而不是布局指南来解决此问题:

【讨论】:

  • 就是这样,但不幸的是它只适用于距离为“0”。我想我会改用github.com/andreamazz/AMScrollingNavbar 之类的 3rdparty 替代方案之一。
  • 是否有任何解决方案可以将它与 0 以外的距离(constraint.const)一起使用?
  • 不得不更新我两年没碰过的应用程序。在 Xcode 9.3 中加载项目开始给我这个问题,但是当您下载实时应用程序时不会出现问题。这为我解决了问题。
【解决方案2】:

我遇到了类似的问题,即使将hidesBarOnSwipe 设置为NO 后导航栏也没有显示。添加以下行为我修复了它(在将hidesBarOnSwipe 设置为NO 之后)

[[self navigationController] setNavigationBarHidden:NO animated:YES];

【讨论】:

  • 这在 iOS 15 中不起作用。
猜你喜欢
  • 2014-12-27
  • 2021-06-04
  • 2021-03-19
  • 2023-03-19
  • 1970-01-01
相关资源
最近更新 更多