UIScrollView не показывает индикатор прокрутки - PullRequest
25 голосов
/ 07 января 2010

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

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

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

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

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

Идеи

Ответы [ 8 ]

66 голосов
/ 12 апреля 2010

У меня была такая же проблема, и она не смогла найти причину. Последний ответ дал последний совет: всякий раз, когда я добавлял новые подпредставления, я сначала удалял все существующие подпредставления из вида прокрутки (и, по-видимому, также индикаторы прокрутки).

После проверки в моем цикле, если подпредставление действительно было того типа, который я хотел удалить, показались индикаторы прокрутки:

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

Обновление: изменен код на предложение Николая

14 голосов
/ 07 января 2010

Когда я имел дело с этим раньше, в моей реализации сетки я иногда получал несколько ячеек поверх индикатора прокрутки. Чтобы исправить это, я теперь вставляю подпредставления с индексом 0, а не добавляю их, что добавляет их в начало. Так что попробуйте что-то вроде этого:

[scrollview insertSubview:subview atIndex:0];

12 голосов
/ 19 октября 2013

Для меня горизонтальный индикатор загадочным образом исчез в моем приложении на iOS 7. Позже выяснилось, что по какой-то странной причине мне пришлось включить оба параметра: Shows Horizontal Indicator и Shows Vertical Indicator, чтобы появился горизонтальный. Если бы я установил, чтобы он не показывал вертикальный индикатор, он также не показывал бы горизонтальный индикатор.

enter image description here

8 голосов
/ 17 октября 2012

Я исправляю это, добавляя этот код после добавления нового подпредставления:

self.showsVerticalScrollIndicator = NO;
self.showsVerticalScrollIndicator = YES;
2 голосов
/ 16 октября 2013

Это также может произойти, если родительский элемент прокрутки на меньше по горизонтали , чем само представление прокрутки:

Полоса прокрутки застряла справа от ScrollView / TableView и эта правая сторона не видна из-за родительских границ (например, с помощью clipToBounds , скрывающим ее).

Я видел эту проблему, поэтому я делюсь ею на случай, если она можетhelp.

Просто проверьте, чтобы ширина рамки вашего ScrollView не превышала ширину родительской рамки просмотра.

1 голос
/ 20 сентября 2016

Два условия,

  1. Если вы используете раскадровку
  2. Если вы используете UITableView внутри UIViewController

Затем вы должны проверить, что ваши индикаторные вставки установлены на 0 (или любое другое число, которое имеет отношение к вашей автопереметке):

enter image description here

1 голос
/ 17 февраля 2012

Это также произойдет (по крайней мере, в случае UITableView), если contentSize слишком мал для просмотра таблицы. Если вы включили подпрыгивание, то табличное представление фактически не прокручивается и, следовательно, не отображает индикаторы. Попробуйте разместить больше контента внутри.

0 голосов
/ 07 января 2010

Заметил это, когда UIScrollView представлял собой горизонтальную полосу высотой 48 пикселей с горизонтальной прокруткой Возможно, Какао решает, что область слишком мала для индикатора прокрутки ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...