UIScrollView не показывает индикатор прокрутки
У меня есть UIScrollView, который я создаю и динамически динамически использую...
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width , length);
Затем я добавляю subviews
в UIScrollView
.
У меня есть scrollView.showsVerticalScrollIndicator = YES;
При прокрутке индикатора прокрутки никогда не появляется.
Даже если я вызываю [scrollView flashScrollIndicators]
, ничего не происходит.
Идеи?
Ответы
Ответ 1
Имел ту же проблему и не мог найти причину. Последний ответ дал окончательный намек: всякий раз, когда я добавлял новые subviews, я сначала удалял все существующие подпрограммы из scrollview (и, по-видимому, также и индикаторы прокрутки).
После проверки в моем цикле, если subview действительно был такого рода, который я хотел удалить, появлялись индикаторы прокрутки:
for (NSObject * subview in [[[scrollView subviews] copy] autorelease]) {
if ([subview isKindOfClass:[MySubView class]]) {
[(MySubView*)subview removeFromSuperview];
}
}
Обновление: измененный код на предложение Николая
Ответ 2
Когда я имел дело с этим раньше, в моей реализации сетки я иногда получал некоторые ячейки поверх индикатора прокрутки. Чтобы исправить это, я теперь вставляю subviews в индекс 0, а не добавляю их, что добавляет их в начало. Поэтому попробуйте что-то вроде этого:
[scrollview insertSubview:subview atIndex:0];
Ответ 3
Для меня горизонтальный индикатор загадочно исчез в моем приложении на iOS 7. Позже выяснилось, что по какой-то странной причине мне пришлось активировать как Shows Horizontal Indicator
, так и Shows Vertical Indicator
, чтобы отобразить горизонтальный. Если я установил, чтобы он не показывал вертикальный индикатор, он также не показывал бы горизонтальный индикатор.
![enter image description here]()
Ответ 4
Я исправлю это, добавив этот код после добавления нового subview:
self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;
Ответ 5
Это может произойти также, если родительский элемент прокрутки меньше по горизонтали, чем сам вид прокрутки:
Полоса прокрутки застряла в правой части ScrollView
/TableView
, и эта правая сторона не видна из-за ограничений родителя (с помощью clipToBounds).
Я видел эту проблему, поэтому я делюсь ею, если она может помочь.
Просто проверьте ширину фрейма ScrollView
не больше ширины его родительского ракурса.
Ответ 6
Это также произойдет (по крайней мере, в случае UITableView), если contentSize слишком мал для прокрутки таблицы. Если вы включили подпрыгивание, тогда табличное представление фактически не прокручивается и не отображает индикаторы. Попробуйте установить больше контента внутри.
Ответ 7
Отметили это, когда UIScrollView был горизонтальной полосой шириной 48 пикселей, прокручиваемой по горизонтали. Может быть, Cocoa решает, что область слишком мала для индикатора прокрутки...
Ответ 8
Два условия,
- Если вы используете раскадровку
- Если вы используете UITableView внутри UIViewController
Затем вы должны проверить, что ваши вставки индикатора установлены в 0 (или любой другой номер, относящийся к вашему автозапуску):
![введите описание изображения здесь]()