UIScrollView没有显示滚动指示器

时间:2010-01-07 02:36:03

标签: iphone cocoa-touch uiscrollview

我有一个UIScrollView,我使用...

动态创建和调整大小
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length);

然后我将subviews添加到UIScrollView。 我有scrollView.showsVerticalScrollIndicator = YES;

滚动时,滚动指示从不出现。

即使我打电话[scrollView flashScrollIndicators]也没有任何事情发生。

想法?

8 个答案:

答案 0 :(得分:66)

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

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

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

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

答案 1 :(得分:14)

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

[scrollview insertSubview:subview atIndex:0];

答案 2 :(得分:12)

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

enter image description here

答案 3 :(得分:8)

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

self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;

答案 4 :(得分:2)

如果scrollview的父级水平小于滚动视图本身,也会发生这种情况:

滚动条位于ScrollView / TableView的右侧,由于父界限( clipToBounds 隐藏它),此右侧不可见例如)。

我已经看过这个问题所以我会分享它,以防它可以提供帮助。

只需检查ScrollView框架的宽度是否大于其父视图框架的宽度。

答案 5 :(得分:1)

如果contentSize太小而无法滚动表视图,也会发生(至少在UITableView的情况下)。如果您启用了弹跳,则tableview实际上不会滚动,因此不会显示指示符。尝试在内部添加更多内容。

答案 6 :(得分:1)

两个条件,

  1. 如果您使用的是故事板
  2. 如果您在UIViewController中使用UITableView
  3. 然后,您应该检查您的指标插入设置为0(或与您的自动布局相关的任何其他数字):

    enter image description here

答案 7 :(得分:0)

当UIScrollView是一个48像素高的水平带,可以水平滚动时注意到这一点。也许Cocoa决定该区域对于滚动指示器来说太小了......