UIScrollView没有显示滚动指示器

Geo*_*rge 25 iphone cocoa-touch uiscrollview

我有一个UIScrollView,我使用它动态创建和调整大小...

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length);
Run Code Online (Sandbox Code Playgroud)

然后我加入subviewsUIScrollView.我有scrollView.showsVerticalScrollIndicator = YES;

滚动时,滚动指示器永远不会出现.

即使我打电话[scrollView flashScrollIndicators]也没有任何反应.

想法?

Peg*_*lon 66

有同样的问题,找不到原因.最后的答案给出了最后的提示:每当我添加新的子视图时,我首先从滚动视图中删除所有现有的子视图(显然也是滚动指示符).

在我的循环中检查后,如果子视图真的是我想要删除的类型,滚动指示器出现:

for (NSObject * subview in [[[scrollView subviews] copy] autorelease]) {
    if ([subview isKindOfClass:[MySubView class]]) {
       [(MySubView*)subview removeFromSuperview];
    }
}   
Run Code Online (Sandbox Code Playgroud)

更新:将代码更改为Nikolai的建议

  • 这段代码中有一个微妙的错误:UIView的`subviews`方法返回视图使用的原始子视图数组.这意味着上面的代码在迭代它时会改变数组.轻松修复:迭代`[[[scrollView subviews] copy] autorelease]` (3认同)

Dan*_*ull 14

当我之前处理过这个问题时,在我的网格实现中,我偶尔会在滚动指示器的顶部找到一些单元格.为了解决这个问题,我现在在索引0处插入子视图而不是添加它们,这会将它们添加到顶部.所以尝试这样的事情:

[scrollview insertSubview:subview atIndex:0];


spy*_*art 12

对我来说,水平指示器在iOS 7的应用程序中神秘地消失了.后来发现,由于一些奇怪的原因,我必须启用两者Shows Horizontal Indicator并使水平指示器Shows Vertical Indicator显示出来.如果我将其设置为不显示垂直指示器,则它也不会显示水平指示器.

在此输入图像描述


And*_*iev 8

我通过在添加新子视图后添加此代码来解决此问题:

self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;
Run Code Online (Sandbox Code Playgroud)