【发布时间】:2014-06-17 17:37:36
【问题描述】:
我已经实现了一个简单的表格视图控制器,其中搜索显示控制器通过界面生成器拖出。然后我启用了刷新,以便在用户下拉刷新时可以看到刷新控件。
问题是,当微调器应该位于搜索栏下方时,它却在搜索栏顶部可见。
我知道原因是最小搜索样式。如果使用默认的 Prominent 样式,则问题不存在。
当您慢慢下拉时,您会看到第一行出现在搜索栏上方,如下所示:
如果你继续拉它,它确实会显示在你期望的位置,但是如果你在它仍然刷新的时候将视图推回,你会在搜索栏顶部看到微调器,如下所示:
只要将它向上推,使微调器接触到第一节标题,微调器就会立即消失。
这是它应该看起来的样子,就像它在 Mail 中一样 - 在搜索栏下方:
我试图通过简单地将微调器放在搜索栏下方来解决此问题,这样它就不会出现在顶部,但这不起作用。奇怪的是,该代码导致微调器在表格上方的灰色区域中不可见,如果将其向上推,它会出现在搜索栏上方 - 与我的预期完全相反。这是代码:
self.refreshControl.layer.zPosition = self.searchDisplayController.searchBar.layer.zPosition - 1;
如何在使用 Minimal 样式时防止微调器出现在搜索栏顶部?
【问题讨论】:
-
我认为 Andrew 的问题是你没有向我们展示如何你是如何用你的代码实现这些变体的,所以很难指出任何可能除了编写关于视图如何显示、堆叠和交互的完整教程之外,这是一个有效的解决方案。只是含糊地说“我这样做”是不够的信息。
-
重现问题不需要代码。一行代码试图解决这个问题。我说明了遇到问题所需的一切:在 IB 中拖出一个表格视图控制器,添加一个搜索显示控制器,在侧边栏中启用刷新,运行应用程序。通过变体,我相信您是指提供的不同屏幕截图?人们可以通过在屏幕上拖动手指来查看该行为。我没有对这种行为进行编码。
-
您是否尝试将 z 位置设置为负数,即 -1?如果那些其他组件使用 Z 位置,那么最好测试一下,看看两者之间的分层是否混乱
-
@theMonster 谢谢,但将其更改为 -1 会导致微调器根本不出现,除非它位于搜索栏上方 - 与我之前尝试的代码相同。
标签: ios objective-c uitableview uisearchdisplaycontroller uirefreshcontrol