我在最新的应用程序中以iOS7为目标,而在状态栏上点击似乎并没有将tableView或collectionView滚动到顶部。

我设置了self.tableView.scrollsToTop = true,仍然没有任何反应。

我知道Apple大大更改了iOS7中的状态栏,但是这些更改是否破坏了scrollsToTop功能?

更新

为了回答其中一个答案中的评论,我进行了测试以确保我的收藏夹 View 确实是屏幕上唯一的scrollView,它是:

(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,其中的NavigationBar是透明的,并在它们在下面滚动时对我的collection / tableViews应用模糊。

更新#3

弄清楚了。原来,我的确在屏幕上有一个以上的scrollView。我的应用程序在应用程序的主要部分下方有一个左抽屉菜单,并且该菜单具有用于选项的tableView。我只是设置了self.menuTable.scrollsToTop = false,其余的一切在整个应用程序中都按预期工作。不必实现scrollView Delegate方法或其他任何方法。

最佳答案

屏幕上是否有多个滚动 View /表格 View /集合 View ?如果是这样,则其中只有一个可以将 scrollsToTop 设置为YES,否则iOS7不会将其中任何一个滚动到顶部。

您还可以实现UIScrollViewDelegate方法 scrollViewShouldScrollToTop: ,如果传入的滚动 View 等于要滚动到顶部的 View ,则返回YES:

- (BOOL) scrollViewShouldScrollToTop:(UIScrollView*) scrollView {
    if (scrollView == self.myTableView) {
        return YES;
    } else {
        return NO;
    }
}

07-28 03:31
查看更多