を使用して動的に作成およびサイズ設定するUIScrollViewがあります...
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length);
次に、subviews
をUIScrollView
に追加します。私はscrollView.showsVerticalScrollIndicator = YES;
を持っています
スクロールすると、スクロールインジケータは表示されません。
[scrollView flashScrollIndicators]
と呼んでも何も起こりません。
アイデア?
同じ問題があり、原因を見つけることができませんでした。最後の答えは最後のヒントを与えました:私が新しいサブビューを追加するときはいつでも、私は最初にすべての既存のサブビューをスクロールビューから削除しました(そして明らかにスクロールインジケーターも)。
ループをチェックインした後、サブビューが本当に削除したい種類の場合、スクロールインジケーターが表示されました。
for (NSObject * subview in [[[scrollView subviews] copy] autorelease]) {
if ([subview isKindOfClass:[MySubView class]]) {
[(MySubView*)subview removeFromSuperview];
}
}
更新:コードをニコライの提案に変更
以前にこれに対処したとき、グリッドの実装で、スクロールインジケーターの上にいくつかのセルが表示されることがありました。これを修正するために、サブビューを追加するのではなく、インデックス0に挿入して、サブビューを一番上に追加しています。したがって、次のようなものを試してください。
[scrollview insertSubview:subview atIndex:0];
私の場合、iOS 7のアプリで水平インジケーターが不思議なことに消えていました。後で、奇妙な理由で両方を有効にする必要があることがわかりましたShows Horizontal Indicator
およびShows Vertical Indicator
水平方向のものを表示します。垂直インジケーターを表示しないように設定すると、水平インジケーターも表示されません。
新しいサブビューを追加した後にこのコードを追加することで、これを修正します。
self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;
スクロールビューの親が水平方向に小さいスクロールビュー自体よりも小さい場合にも発生する可能性があります。
スクロールバーはScrollView
/TableView
の右側に固定されており、親の境界のためにこの右側は表示されません(clipToBounds非表示インスタンス)。
私はこの問題を見たので、助けになる場合に備えて共有します。
ScrollView
のフレームの幅が、親ビューフレームの幅より大きくならないように確認してください。
ContentSizeが小さすぎてテーブルビューをスクロールできない場合にも発生します(少なくともUITableViewの場合)。バウンスを有効にしている場合、テーブルビューは実際にはスクロールしないため、インジケーターは表示されません。より多くのコンテンツを内部に収めてみてください。
UIScrollViewが48ピクセルの高さの水平バンドであり、水平方向にスクロール可能であるときに、これに気づきました。たぶん、Cocoaは、領域がスクロールインジケーターには小さすぎると判断しました...