2010-01-07 140 views
23

我有创建和大小动态使用一个UIScrollView ...的UIScrollView不显示滚动指示

scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length); 

我然后添加subviewsUIScrollView。 我确实有scrollView.showsVerticalScrollIndicator = YES;

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

即使我打电话[scrollView flashScrollIndicators]什么也没有发生。

想法?

+0

看起来不错。当然,你不是把它放在别的地方回到NO吗? – 2010-01-07 02:37:54

回答

66

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

在我的循环检查后,如果子视图真的是那种我想要删除的滚动指标出现了:

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

更新:改变代码尼古拉的建议

+2

这段代码中有一个微妙的错误:UIView的'subviews'方法返回视图使用的原始子视图数组。这意味着上面的代码在迭代它时突变了数组。简单修复:迭代'[[[[scrollView子视图]复制] autorelease]' – 2010-07-04 22:02:48

+0

哇..这个答复一次解决2个错误:)谢谢:D – 2010-12-06 15:12:39

+0

这是完美的解决方案,谢谢 – RVN 2011-05-27 16:28:38

0

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

+0

在这种情况下,滚动视图是屏幕长度的几倍,正好是屏幕的宽度。 – George 2010-01-07 02:43:43

14

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

[scrollview insertSubview:subview atIndex:0];

+0

“UICollectionView”有类似解决方案的机会吗? – rounak 2014-11-02 12:32:23

1

它也将发生(至少在UITableView的情况下)如果contentSize对于表视图滚动来说太小。如果您启用了弹跳功能,则表格视图实际上不会滚动,因此也不会显示指示符。尝试在内部安装更多内容。

8

我解决这个问题通过将此代码添加新的子视图后:

self.showsVerticalScrollIndicator = NO; 
self.showsVerticalScrollIndicator = YES; 
+0

这个和涵盖我的指标的内容是我遇到的问题的根源。 – jbierling 2012-11-18 05:18:12

2

它也可以发生,如果滚动视图的父母是比滚动视图本身较小的水平

滚动bar粘在ScrollView/TableView的右侧,由于父界限(例如,将其隐藏),此右侧不可见。

我见过这个问题,所以我分享它,以防它可以帮助。

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

10

对我来说,水平指示器在iOS 7的应用程序中已经神秘地消失了。后来发现出于某种奇怪的原因,我不得不启用Shows Horizontal IndicatorShows Vertical Indicator才能显示水平指示器。如果我将它设置为不显示垂直指示符,它也不会显示水平指示符。

enter image description here

+1

感叹..第一次世界iOS7问题。这解决了我的问题。 – 2014-05-28 08:05:17

0

两个条件,

  1. 如果您使用的是故事板
  2. 如果使用内一个UIViewController

一个UITableView然后,你应该检查你的指标插图设置为0(或与您的自动布局相关的任何其他数字):

enter image description here