Подтвердить что ты не робот

UIScrollView не показывает индикатор прокрутки

У меня есть UIScrollView, который я создаю и динамически динамически использую...

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

Затем я добавляю subviews в UIScrollView. У меня есть scrollView.showsVerticalScrollIndicator = YES;

При прокрутке индикатора прокрутки никогда не появляется.

Даже если я вызываю [scrollView flashScrollIndicators], ничего не происходит.

Идеи?

4b9b3361

Ответ 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 (или любой другой номер, относящийся к вашему автозапуску):

введите описание изображения здесь