【问题标题】:iOS13 - UITableView + UISearchController with custom hidesSearchBarWhenScrolling behavioriOS13 - 具有自定义 hidesSearchBarWhenScrolling 行为的 UITableView + UISearchController
【发布时间】:2020-04-30 03:27:58
【问题描述】:

在 iOS 13 上,如果您将 hidesSearchBarWhenScrolling 设置为 true,则视图控制器将隐藏搜索栏,您必须向下滚动才能显示它。 如果您将其设置为false,那么它会立即显示并且不会消失。

我认为这是一个合理的行为,假设最终用户都精通 Apple 产品的工作方式。鉴于情况似乎并非如此,我想在第一次访问时显示搜索栏,但是如果用户开始向上滚动,搜索栏就会被隐藏。所以这是真假的混合行为。

这适用于 iOS12,我在 viewDidAppear 中设置了 hidesSearchBarWhenScrolling = true,但现在在 iOS 13 上并非如此。表格滚动,但搜索栏保持在顶部,而不是与表格视图一起滚动(顺便说一句,这只是因为屏幕没有再次呈现)。

知道怎么做吗?我尝试更改 tableview 的内容偏移量,但真的没有运气。

【问题讨论】:

    标签: ios uitableview uisearchbar ios13


    【解决方案1】:

    对我来说,在 viewDidLoad() 方法中添加以下几行后它就起作用了:

    navigationController!.navigationBar.sizeToFit()

    无需指定hidesSearchBarWhenScrolling,因为我认为默认为true,但如果您仍然看到搜索栏,则可以将其设置为true 以隐藏它。

    【讨论】:

      【解决方案2】:

      我遇到了与您相同的问题,并且此类问题似乎仅出现在 iOS 13 中。在 iOS 14 中,您的解决方案完美运行。 要使其在 iOS 13 中运行,您需要添加

      self.navigationItem.hidesSearchBarWhenScrolling = true
      self.navigationController?.view.setNeedsLayout() // add this line
      

      viewDidAppear

      它适用于模拟器 iOS 13.7 我希望它也适用于你。

      【讨论】:

        猜你喜欢
        • 2012-08-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多