代码之家  ›  专栏  ›  技术社区  ›  Sascha

在UITableView中自动滚动到顶部不起作用

  •  19
  • Sascha  · 技术社区  · 15 年前

    雇佣关系如下:

    UIView公司

    ->表格视图

    搜索显示控制器。

    有什么想法吗?

    谨致问候,

    8 回复  |  直到 15 年前
        1
  •  27
  •   Brian    15 年前

    你需要禁用 scrollsToTop 除了一个可滚动的视图之外。自从 UITableView UIScrollView ,很容易做到。但是,如果你想在webview上禁用它,它就有点棘手了。这似乎有效:

    [webView.subviews objectAtIndex:0].scrollsToTop = NO;
    

    但这有点可疑,因为它在webview中的未记录部分四处游荡。如果苹果决定重新排列子视图,它可能会停止工作。

        2
  •  30
  •   opyh    15 年前

    您可能已经在视图层次结构中添加了一些视图,这些视图是UIScrollView或包含滚动视图(例如。 UIWebView UITextView ). 当您点击状态栏时,iOS会搜索最上面的滚动视图 scrollsToTop 设置为 YES

    将此添加到您的类中:

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

    打电话来

    [self disableScrollsToTopPropertyOnAllSubviewsOf:myAddedSubview];
    

        3
  •  4
  •   Oliver Pearmain    12 年前

    不知道苹果在抽什么烟,但从设计上看,iPhone的行为与iPad明显不同。 Apple's documentation 包括“特殊条件”注释如下。。。

    不止一个屏幕上的滚动视图将scrollsToTop设置为YES。

    因此,在iPhone上,必须确保只有一个UIScrollView(或UITableView/UICollectionView/UIWebView等)具有 scrollsToTop = YES .

    因为scrollsToTop默认为YES,所以必须显式设置 scrollsToTop = NO

        4
  •  3
  •   Frank Schmitt    15 年前

    显然,如果在视图控制器中有多个滚动视图(在您的情况下是WebView和TableView),那么“点击状态栏滚动到顶部”将被禁用。

    http://twitter.com/drance/status/2448035250438144

        5
  •  3
  •   Gurpartap Singh    11 年前

    opyh回答的快速变体。投票给他!

    func disableScrollsToTopPropertyOnAllSubviewsOf(view: UIView) {
        for subview in view.subviews {
            if let scrollView = subview as? UIScrollView {
                (scrollView as UIScrollView).scrollsToTop = false
            }
            self.disableScrollsToTopPropertyOnAllSubviewsOf(subview as UIView)
        }
    }
    
        6
  •  1
  •   Dan Clarke    13 年前

    我只是想补充一下,如果你用的是 UITextView ,不是子视图需要 scrollsToTop 超文本视图 ,简而言之,您需要以下代码:

    [myTextView setScrollsToTop:FALSE];
    

    这应该能解决问题( ).

        7
  •  0
  •   Martin Lockett    15 年前

    我有这个问题,只是在笔尖的一个表视图。非常令人沮丧,直到我记起我是以编程方式添加UITextView作为表视图的头。在UITextView上scrollsToTop=NO完成了这个技巧。

        8
  •  0
  •   Chris Miles    14 年前

    scrollsToTop = NO 在视图中的所有滚动视图上,但要滚动到顶部的视图除外。这有助于系统找到正确的滚动视图。

    推荐文章