web-dev-qa-db-ja.com

UIScrollViewにスクロールインジケーターが表示されない

を使用して動的に作成およびサイズ設定するUIScrollViewがあります...

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

次に、subviewsUIScrollViewに追加します。私はscrollView.showsVerticalScrollIndicator = YES;を持っています

スクロールすると、スクロールインジケータは表示されません。

[scrollView flashScrollIndicators]と呼んでも何も起こりません。

アイデア?

25
George

同じ問題があり、原因を見つけることができませんでした。最後の答えは最後のヒントを与えました:私が新しいサブビューを追加するときはいつでも、私は最初にすべての既存のサブビューをスクロールビューから削除しました(そして明らかにスクロールインジケーターも)。

ループをチェックインした後、サブビューが本当に削除したい種類の場合、スクロールインジケーターが表示されました。

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

更新:コードをニコライの提案に変更

66
Pegolon

以前にこれに対処したとき、グリッドの実装で、スクロールインジケーターの上にいくつかのセルが表示されることがありました。これを修正するために、サブビューを追加するのではなく、インデックス0に挿入して、サブビューを一番上に追加しています。したがって、次のようなものを試してください。

[scrollview insertSubview:subview atIndex:0];

14
Daniel Tull

私の場合、iOS 7のアプリで水平インジケーターが不思議なことに消えていました。後で、奇妙な理由で両方を有効にする必要があることがわかりましたShows Horizontal IndicatorおよびShows Vertical Indicator水平方向のものを表示します。垂直インジケーターを表示しないように設定すると、水平インジケーターも表示されません。

enter image description here

12
spybart

新しいサブビューを追加した後にこのコードを追加することで、これを修正します。

self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;
8
Andrey Soloviev

スクロールビューの親が水平方向に小さいスクロールビュー自体よりも小さい場合にも発生する可能性があります。

スクロールバーはScrollView/TableViewの右側に固定されており、親の境界のためにこの右側は表示されません(clipToBounds非表示インスタンス)。

私はこの問題を見たので、助けになる場合に備えて共有します。

ScrollViewのフレームの幅が、親ビューフレームの幅より大きくならないように確認してください。

2
Guian

2つの条件、

  1. ストーリーボードを使用している場合
  2. UIViewController内でUITableViewを使用している場合

次に、インジケーターのインセットが0(または自動レイアウトに関連するその他の数値)に設定されていることを確認する必要があります。

enter image description here

1
OhadM

ContentSizeが小さすぎてテーブルビューをスクロールできない場合にも発生します(少なくともUITableViewの場合)。バウンスを有効にしている場合、テーブルビューは実際にはスクロールしないため、インジケーターは表示されません。より多くのコンテンツを内部に収めてみてください。

1
thetrutz

UIScrollViewが48ピクセルの高さの水平バンドであり、水平方向にスクロール可能であるときに、これに気づきました。たぶん、Cocoaは、領域がスクロールインジケーターには小さすぎると判断しました...

0
Seva Alekseyev