Форум программистов, компьютерный форум, киберфорум
Программирование iOS/iPhone
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/29: Рейтинг темы: голосов - 29, средняя оценка - 4.76
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27

ScrollView не скроллится (хотя contentSize > frame)

08.01.2014, 18:48. Показов 5965. Ответов 17
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня!

Схожу понемножку с ума:
Есть scrollView. Аутлет проведен, "Scrolling enabled" включен, "User Interaction Enabled" включен, все subview даже упаковал в отдельный View и засунул его в скролл в качестве единственного элемента.
Во ViewDidLoad уже явно написал:
Objective-C
1
2
self.scrollView.scrollEnabled = YES;
        self.scrollView.contentSize = CGSizeMake(320, 1050);
ContentSize получается более чем в два раза больше фрейма скролла.

А он не скроллится вообще, хоть убейся((
Перечитал весь StackOverflow - никаких дополнительных советов нет..

Буду очень благодарен за какие-то идеи..
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.01.2014, 18:48
Ответы с готовыми решениями:

Не получается задать contentSize
Доброго времени суток. Столкнулся с проблемой, когда в UITextView необходимо сделать отступ текста. Делаю это с помощью ; Соответственно...

Websocket frame: Как правильно построить frame byte array?
Доброго дня. Пытаюсь написать свою имплементацию Websocket, но застрял на построении frame. Вот структура frame согласно спецификации...

Как программно добавить Frame в другой существующий на форме frame?
Делаю это так: На форме лежит Frame1. на инициализации формы.... Dim mFrame As Object

17
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
08.01.2014, 19:53
Подозреваю, что используется auto layout. Если да, то надо констрейном указать расстояние от самого нижнего окна в scroll view (в вашем случае вот этого "даже упаковал в отдельный View") до нижней части самого scroll view. При использовании auto layout contentSize рассчитывается из констрейнов.
1
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
08.01.2014, 20:07  [ТС]
Спасибо большое! Буду в ближайшее время читать детальнее про UIScrollView, чтобы понять его кухню..
Добавил такой констрейнт, потом сделал "Add missing constraints", чтобы автоматически добавились недостающие, и - ура, скролл завертелся))

Правда, до конца не докручивается - заметил, что мой contentsize почему-то сбрасывается в исходное значение, как только я начинаю взаимодействовать со скроллом..
Пока тема активна - может у вас есть мнение и по поводу этой новой проблемы?
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
08.01.2014, 21:03
self.scrollView.scrollEnabled = YES;
self.scrollView.contentSize = CGSizeMake(320, 1050);
не из за этого случайно?
0
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
08.01.2014, 21:10  [ТС]
Цитата Сообщение от mobidevelop Посмотреть сообщение
self.scrollView.scrollEnabled = YES;
self.scrollView.contentSize = CGSizeMake(320, 1050);
не из за этого случайно?
Чувствую, я чего-то не понимаю..((
Сейчас разместил на своем scrollView->View-> только один элемент - кнопку.

Высота скролла (скролл по вертикали выполняется) == 422;
Высота View внутри него == 800;
Кнопка внутри View находится по y-смещению == 700.
И в коде я ставлю contentSize == 1050.

Что же из этого списка может быть некорректным?
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
08.01.2014, 21:25
Все констрейны, которые нужны:
Leading, trailing, top space и bottom space от View, которая лежит в скролл-вью, до самого скролл вью
Остальное убить и не пользовать Add missing constraints пока не въедете в них. Я въезжал пару месяцев )))) Но в 5-м икскоде они значительно удобнее.
0
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
08.01.2014, 21:42  [ТС]
Цитата Сообщение от mobidevelop Посмотреть сообщение
Все констрейны, которые нужны:
Leading, trailing, top space и bottom space от View, которая лежит в скролл-вью, до самого скролл вью
Остальное убить и не пользовать Add missing constraints пока не въедете в них. Я въезжал пару месяцев )))) Но в 5-м икскоде они значительно удобнее.
Спасибо, сделал так, как вы сказали. Теперь ошибка "scrollview has ambiguous scrollable content".
Нагуглил статью, вроде как, на схожую тему:
http://www.suchanowski.com/201... crollview/

Сейчас буду читать.

Что вы скажете по поводу этой ошибки? Она исчезает при указании, с использованием констрейтсов ширины-высоты скроллу, или view, которая лежит внутри него, но тогда проблема со скроллом остается
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
08.01.2014, 21:49
Скажу, что скорее всего перед добавлением новых констрейны надо было убить старые.
А на самом деле, это уже отладка. Путь я показал, дальше самостоятельно
1
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
08.01.2014, 22:01  [ТС]
Да, старые убил.
Спасибо большое за помощь! Как только разберусь - напишу свою последовательность действий.
0
5 / 5 / 0
Регистрация: 14.01.2014
Сообщений: 7
14.01.2014, 23:27
Сталкивался с такой проблемой, указывал контет во viewDidLoad, потом где-то наткнулся на статью, где говорилось о том, что лучше этот делать после того как загрузится view, перенес метод setContentSize во viewWillAppear и все заработало на ура.
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
15.01.2014, 01:13
ага. Пока пользователь айфон в лэндскейп не перевернул. Ну, а если совсем точно - пока родительской вьюхе не понадобилось layout обновить. Неправильная статья. Или неправильно понята.
1
5 / 5 / 0
Регистрация: 14.01.2014
Сообщений: 7
15.01.2014, 13:22
Цитата Сообщение от mobidevelop Посмотреть сообщение
ага. Пока пользователь айфон в лэндскейп не перевернул. Ну, а если совсем точно - пока родительской вьюхе не понадобилось layout обновить. Неправильная статья. Или неправильно понята.
Спасибо за более точное разъяснение. Благодаря Вам нашел баг)
0
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
15.01.2014, 19:35  [ТС]
Накидали мне сразу после постинга этой темы других задач, и только сегодня вернулся опять к своей проблеме.
За пару дней пришла в голову интересная идея, которую я попробовал реализовать - и, вуаля, - все стало красиво, просто и без каких-то проблем.

Удивляет, правда, то, что сделал все иначе, чем рекомендовали мне добрые люди в этой теме, и чем было написано на разных стековерфлов'ах. А сделал я следующее:

Создал xib-файл, в нем View "свободной" формы, который растянул на высоту контента, который я планировал вставить в свой скролл.
Насовал в этот View кучу компонентов, и потом просто загрузил в свой скролл содержимое этого xib'а, как subView:
Objective-C
1
2
3
4
NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"AddMoneyScroll_P" owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
[self.scrollView addSubview:mainView];
self.scrollView.contentSize = mainView.frame.size;
Ни фокусов с констрейтсами (хотя, конечно, надо в них углубиться в самое ближайшее время), ни каких-то других тонкостей - вроде все просто, и работает.
Вижу в этом решении один большой плюс - мне очень удобно в отдельном xib'e рисовать содержимое скролла.

Но неужели все так просто?)) Подскажите, может в моем решении есть какой-то потенциальный скрытый косяк?

Добавлено через 1 час 27 минут
Уже понял абсурдность своего решения))
Не прокатила внезапная "гениальная идея"
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
15.01.2014, 21:14
А в чем беда-то? Не сказать, чтобы прямо безупречный вариант, но по крайней мере вполне работоспособный. Если в layoutSubviews добавить "self.scrollView.contentSize = mainView.frame.size;", еще и безбажный.
Интересно же
0
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
15.01.2014, 21:52  [ТС]
Цитата Сообщение от mobidevelop Посмотреть сообщение
А в чем беда-то? Не сказать, чтобы прямо безупречный вариант, но по крайней мере вполне работоспособный. Если в layoutSubviews добавить "self.scrollView.contentSize = mainView.frame.size;", еще и безбажный.
Интересно же
(сразу скажу - пока оставил так, но еще думаю).
Дело в том, что у меня в mainView лежит штук 15 разных полей ввода, из которых мне надо забирать инфу.
Чтобы получить к ним доступ, я каждому назначил Tag = 1,2,3..., в контроллере, который содержит скролл, объявил 15 UITextField, и после приведенного выше мною кода я прохожусь по всем subView этого mainView, проверяю тег, и присваиваю нужному UITextField нужный subView.
После этого уже работаю с ними без проблем.

Я не очень давно занимаюсь iOS разработкой, может я выбрал слишком сложный подход, и поэтому он меня смутил?

Т.е. в принципе, все работает, но как-то показалось мне похожим на извращение))
0
182 / 182 / 3
Регистрация: 10.01.2013
Сообщений: 596
15.01.2014, 22:01
Цитата Сообщение от someMan Посмотреть сообщение
Т.е. в принципе, все работает, но как-то показалось мне похожим на извращение
Ну да, есть что-то такое
0
 Аватар для zulkis
686 / 613 / 43
Регистрация: 13.01.2011
Сообщений: 1,722
16.01.2014, 12:21
Чтобы получить к ним доступ, я каждому назначил Tag = 1,2,3..., в контроллере, который содержит скролл, объявил 15 UITextField,
Используйте NSArray и IBOutletCollection. И в таких случаях не нужно "пробегать по subview", это плохой тон.

NSArray *subviewArray = [[NSBundle mainBundle] loadNibNamed:@"AddMoneyScroll_P" owner:self options:nil];
UIView *mainView = [subviewArray objectAtIndex:0];
Используйте методы NSArray:
Objective-C
1
2
- lastObject;
- firstObject;
1
0 / 0 / 0
Регистрация: 08.09.2013
Сообщений: 27
16.01.2014, 14:37  [ТС]
Цитата Сообщение от zulkis Посмотреть сообщение
Используйте NSArray и IBOutletCollection. И в таких случаях не нужно "пробегать по subview", это плохой тон.


Используйте методы NSArray:
Objective-C
1
2
- lastObject;
- firstObject;
Спасибо за дополнение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.01.2014, 14:37
Помогаю со студенческими работами здесь

Передача информации из одного Frame в другой Frame
Здравствуйте! У меня следующий вопрос: На окне есть первый Frame в котором несколько страниц. На одной из страниц первого Frame, а...

In a frame because it set 'X-Frame-Options' to 'SAMEORIGIN
http://rghost.ru/7hxl2VcQS.view Как ето исправить?

Обновление данных на Frame из другого Frame
Помогите реализовать: есть MainFrame и SettingsFrame. Нужно что бы при нажатии Button на SettingsFrame обновилась (перерисовалась) таблица...

Не скроллится страница
Добрый вечер! У меня проблема с сайтом. Во всех браузерах страница без проблем скроллится, но в google chrome стоит на месте , только с...

Frame, Chrome, Blocked a frame with origin "null"
Здавствуйте, имеется следующий файл: <html> <head </head> <frameset cols="20%, *" > <frame src=panel.html scrolling=yes...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru