2015-11-28 5 views
0

У меня возникают проблемы с UIScrollView ... Я много исследовал и обнаружил случаи, которые были похожи, но решения никогда не работали так вот небольшое объяснение (довольно сложно объяснить)UIScrollView: просмотр внутри не подходит должным образом, странное поведение, просмотр снимков назад на ощупь

У меня есть viewcontroller, который содержит UIScrollView, и я загружаю пару контроллеров представлений внутри этого uiscrollview ... Я инстальтирует их, а затем добавляю их в scrollView, как это ...

viewController1.view.frame = scrollView1.bounds 
var frame0 = viewController1.view.frame 
frame0.origin.x = 0 
viewController1.view.frame = frame0 

self.addChildViewController(viewController1) 
self.scrollView1.addSubview(viewController1.view) 
viewController1.didMoveToParentViewController(self) 

viewController2.view.frame = scrollView1.bounds 
var frame01 = viewController2.view.frame 
frame01.origin.x = self.view.frame.size.width 
viewController2.view.frame = frame01 

self.addChildViewController(viewController2) 
self.scrollView1.addSubview(viewController2.view) 
viewController2.didMoveToParentViewController(self) 

... 

после этого я настроить вид прокрутки следующим

self.scrollView1.contentSize = CGSizeMake(self.view.frame.width * 5, self.view.frame.height) 
scrollView1.delaysContentTouches = false 

раз 5, потому что есть 5 ViewControllers

(Вид прокрутки позволил пейджинг)

Сейчас этот метод работает достаточно хорошо, и все виды загружаются внутри вида прокрутки, и я могу красть корыто моего но вот проблема. Мое первое представление загружено отлично, а затем, когда я сажусь вправо, я вижу, что второй вид смещен к вершине, а часть его скрыта, а затем, когда я касаюсь кнопки внутри обзора, она внезапно падает на дно в это место ... Это действительно раздражает, потому что это делает пользовательский интерфейс действительно раздражает, так как часть его скрыта ...

Я сделал иллюстрацию этого: http://imgur.com/xHRwXt4

Я перепробовал кучу такие вещи, как установка

self.automaticallyAdjustsScrollViewInsets = false 

или

self.scrollView1.clipsToBounds = true 

но все же такая же проблема возникает. Я также заметил, что это была моя панель навигации, так как представление, содержащее scrollview, находится внутри ViewController, у которого есть панель навигации (из uinavigationcontroller).

Итак, для тестирования я пробовал его без контроллера навигации и бара, но все тот же вид проблемы. Это действительно расстраивает, и я не могу найти решение.

Однако я должен сказать, когда Scrollview находился внутри ViewController с Панель навигации и я установил

self.scrollView1.contentSize = CGSizeMake(self.view.frame.width * 5, self.view.frame.height - 66) 

(Обратите внимание на -66) Тогда задача щелкать не произошло, однако это WASN» t эффект, который я искал, поскольку scrollview необходимо заполнить весь вид, также вид внутри UIScrollView не был полностью виден, и это тоже не было решением.

Я также учил, что это, возможно, потому, что мои ограничения были по-разному установлены на одном из контроллеров зрения я нагруженные, так что я пробовал с начала того же типа зрения контроллера несколько раз до сих пор происходила с той же проблемой ...

(Так что я много пробовал, но независимо от того, что я пытаюсь сделать, это ухудшается или возникает другая проблема для каждого перемещения представления в любом направлении, тогда я добавляю self.automaticallyAdjustsScrollViewInsets = false, но затем привязка возвращается и т. Д. И т. Д.)

Надеюсь, у кого-то есть предложения по его решению (Если вам нужны еще несколько иллюстраций и т. Д.. Затем я представлю их тоже)

Спасибо

+0

Касательно вышеприведенного кода, в чем цель добавления покупкиAmountViewController? –

+0

Это ошибка должна быть ViewController1 тоже я изменил свой код на ViewController1 и т. Д., Чтобы быть более ясным, вероятно, забыл изменить это благодаря! Я исправлю это. – clickbeast

ответ

0

Судя по всему, есть 2 вещи, чтобы попробовать:

  1. Некоторые из контроллеров зрения ребенка могут содержать взгляды прокрутки и их automaticallyAdjustsScrollViewInsets = false должно быть установлено иначе, чем контроллер родительского представления
  2. Очень полезный способ выяснить, включить ли отладочную визуализацию. Запустите проект, затем перейдите в раздел Xcode> View Debugging> Show View Frames. Посмотрите, смещены ли дочерние элементы диспетчера дочерних представлений вверху. Если они правильно выровнены (вверху все покраснели), это означает, что проблема кроется в отдельных детях.
+0

Спасибо, я постараюсь сделать второй вывод точно. У меня нет прокрутки, внутри которых я знаю ... – clickbeast

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