【问题标题】:Scroll to top with status bar tap使用状态栏点击滚动到顶部
【发布时间】:2014-06-23 11:06:48
【问题描述】:

我查看了有关该主题的各种 SO 问题,但没有找到解决方案。我有一个UIViewController 和一个UITableView 和一个UICollectionView。我希望UICollectionView 在用户点击它时滚动到顶部。

文档说如果你有多个 UiScrollView 子类 - 你需要将它们设置为 no 并且你想要滚动到顶部的 UiScrollView 设置为是。

所以我写了这段代码来浏览我所有的观点:

for (UIScrollView *view in self.view.subviews) {
                    if ([view isKindOfClass:[UIScrollView class]]) {
                        view.scrollsToTop = NO;
                    }
                }

                self.collectionView.scrollsToTop = YES;

这样,我确信 UiScrollView 的任何子类都将其 scrollsToTop 属性设置为 no。

但是点击状态栏并没有做任何事情。

谁能告诉我这里缺少什么?

谢谢

【问题讨论】:

  • 您确认没有子视图包含子类UIScrollView
  • 我上面贴的代码遍历了我视图中的所有子视图。
  • @Tander 您的代码不会遍历所有子视图,可以有嵌套的滚动视图。尝试递归方法。

标签: ios objective-c uiscrollview


【解决方案1】:

您似乎只是在遍历主视图的子视图。您的 UITableView 可能嵌套在另一个视图中。尝试执行以下操作;

//in view did load
[self setScrollToTopFalse:self.view];
self.collectionView.scrollsToTop = YES;

-(void)setScrollToTopFalse:(UIView *)v
{
    for (UIView * v1 in [v subviews]) {
        if ([[v1 class]isSubclassOfClass:[UIScrollView class]]) {
            ((UIScrollView *)v1).scrollsToTop = NO;
        }
        [self setScrollToTopFalse:v1];
    }
}

【讨论】:

  • 谢谢,我会在上午试一试
猜你喜欢
  • 2013-03-13
  • 2012-05-29
  • 2012-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-02
  • 2013-01-29
  • 1970-01-01
相关资源
最近更新 更多