UIScrollView contentSize Проблема - с примером кода - PullRequest
0 голосов
/ 28 мая 2011

В моем представлении я создаю вид прокрутки шириной 320 и высотой 70.

Отвечая на нажатие пользователем кнопки, я расширяю представление прокрутки, чтобы оно имело размер 380 (ч) х 320 (ш).

Код для этого показан ниже:

CGRect scrollviewFrame = CGRectMake(0, 30, 320, 380);
[scrollView setFrame:scrollviewFrame];
[self layoutScrollImages:YES];
CGSize srect =  CGSizeMake([scrollView bounds].size.width, (kNumImages * (kScrollObjHeight + 10)));
[scrollView setContentSize:srect];

Константы, упомянутые в приведенном выше фрагменте, определены как:

const CGFloat kScrollObjHeight  = 80;
const NSUInteger kNumImages     = 100;

Когда я отлаживаю этот проект, я вижу, что размер srect составляет 320 (w) x 8000 (h); однако моя проблема в том, что прокручиваемая область (где пользователь может прикоснуться к ней для прокрутки прокрутки) остается такой же, как и в оригинальном размере.

Я явно что-то упускаю, кто-нибудь знает, что это такое?

создал пример проекта, чтобы проиллюстрировать мою проблему, он доступен здесь: http://dl.dropbox.com/u/9930498/ScrollViewTest.zip

Ответы [ 3 ]

2 голосов
/ 28 мая 2011

Проблема в вашем образце в том, что у вас очень странная структура для загрузки ваших представлений. Таким образом, представление, которое вы добавляете к экземпляру DetailScrollView, является корневым представлением DetailScrollView.xib, а не самим scrollview, что, как я полагаю, является тем, чего вы ожидали.

Самый быстрый способ решить вашу проблему - настроить корневое представление в DetailScrollView.xib для автоматического изменения ширины и высоты.

0 голосов
/ 11 октября 2012

Вы должны представить scrollView как окно, где под окном я подразумеваю рамку scrollView, которая также является координатами, которые scrollView обнаруживает ваши прикосновения.Установив contentView равным 320 (w) x 8000 (h), вы изменяете только содержимое представления прокрутки, которое является полной областью за этим окном.

Расширяя представление содержимого, scrollView может прокручивать более широкую область, но для обнаружения касаний в большем прямоугольнике необходимо изменить кадр представления прокрутки.

0 голосов
/ 28 мая 2011

UIView не может реагировать на прикосновения, которые находятся за пределами своего суперпредставления. В вашем примере кажется, что вы расширяете представление прокрутки, но родительский вид представления прокрутки все еще имеет высоту всего 100 единиц.

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