【发布时间】:2013-10-04 05:43:50
【问题描述】:
我在最新的应用程序中以 iOS7 为目标,点击状态栏似乎不会将 tableView 或 collectionView 滚动到顶部。
我已经设置了self.tableView.scrollsToTop = true,但仍然没有任何反应。
我知道 Apple 对 iOS7 中的状态栏进行了重大更改,但这些更改是否破坏了scrollsToTop 功能?
更新
针对其中一个答案中的评论,我进行了测试以确保我的集合视图确实是屏幕上唯一的滚动视图,并且它是:
(lldb) po [self.view recursiveDescription]
<UIView: 0x1092ddf0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x109357e0>>
| <UICollectionView: 0x11351800; frame = (0 0; 320 568); clipsToBounds = YES; opaque = NO; autoresize = W+H; gestureRecognizers = <NSArray: 0x10966080>; layer = <CALayer: 0x109623a0>; contentOffset: {0, -64}> collection view layout: <UICollectionViewFlowLayout: 0x10940a70>
| | <UIImageView: 0x10965fa0; frame = (0 564.5; 320 3.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x10965ee0>> - (null)
| | <UIImageView: 0x10948f60; frame = (316.5 561; 3.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO; layer = <CALayer: 0x10966030>> - (null)
更新 #2
不确定这是否重要,但我使用的是标准 iOS7 NavigationController,其中导航栏是透明的,并在我的 collection/tableViews 在下方滚动时应用模糊。
更新 #3
想通了。原来我确实在屏幕上有不止一个滚动视图。我的应用程序在应用程序的主要部分下方有一个左侧抽屉菜单,该菜单有一个用于选项的 tableView。我只是设置了self.menuTable.scrollsToTop = false,并且在应用程序的其余部分中一切都按预期工作。不必实现 scrollView 委托方法或任何东西。
【问题讨论】:
-
是否需要设置类似 self.scrollView.scrollEnabled = YES; ?但是对于 tableview..
-
更新#3 中的好建议,以同样的方式得到了解决。但奇怪的是,如果没有更新 #3 修复,它在 iOS8 中有效,但在 iOS7 中无效。
标签: iphone objective-c uitableview ios7 uistatusbar