2016-03-14 5 views
1

У меня есть контроллер с UIScrollView в нем, а в версии iPad нет прокрутки до бутылки. Я явно установить высоту размера контента так:UIScrollView не прокручивается с большой высотой

CGSize newSize = CGSizeMake(self.view.bounds.size.width-4, 2500); 
    // assume self is the content view 
    CGRect newFrame = (CGRect){CGPointZero,newSize}; // Assuming you want to start at the top-left corner of the scroll view. Change CGPointZero as appropriate 
    [self.mainScroll setContentSize:newSize]; 

Даже в отладчике, когда я распечатать описание scrollView я вижу следующее:

<UIScrollView: 0x7fc12486e400; frame = (0 0; 768 960); clipsToBounds = YES; gestureRecognizers = <NSArray: 0x7fc1259cf830>; layer = <CALayer: 0x7fc1259a45e0>; contentOffset: {0, 765}; contentSize: {764, 2500}> 
(lldb) 

Как вы можете видеть, размер содержимого устанавливается в 2500, однако , я не могу прокрутить что-нибудь. И я, очевидно, проверю, что прокрутка включена: ДА.

Кроме того, основной вид прокрутки привязан к главному виду с ограничениями типа top-left-right-bottom со значением 0. Но даже когда я увеличиваю высоту себя взгляд, все же, никакого эффекта.

Как заставить его прокрутить ???

+1

Прокрутка включена, но включено ли взаимодействие с пользователем? Кроме того, есть ли какие-либо другие взгляды в представлении, которые могут перехватывать события касания? Внедрение '(void) scrollViewDidScroll: (UIScrollView *) scrollView' и' (void) scrollViewWillBeginDragging: (UIScrollView *) scrollView' и помещает там некоторые точки останова. – wottle

+0

@wottle да, его разрешено. Я реализую эти 2 метода, и он выводит мой текст в консоли, когда я пытаюсь перетащить view .. in (void) scrollViewWillBeginDragging: (UIScrollView *) scrollView –

+1

Вы напечатали 'frame' и' contentSize' Scrollview в '(void) scrollViewWillBeginDragging: (UIScrollView *) scrollView' метод? Интересно, будет ли contentSize обновляться. – wottle

ответ

3

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

+0

Это загружаемый проект, который иллюстрирует принцип: https://github.com/mattneub/Programming-iOS-Book-Examples/tree/master/bk2ch07p367scrollViewInNibAutolayout2 – matt

+0

Я ценю ваше объяснение, загрузите проект как можно скорее. Учитывая получение вашей книги. :) –

Смежные вопросы