Дополнительное пространство (вставка) в режиме просмотра прокрутки во время выполнения

Настройка

Я работаю над представлением в Xcode 5, который отображает набор текстовых полей. Чтобы обрабатывать прокрутку, когда клавиатура подходит, я использую вид прокрутки для размещения моих текстовых полей. Я использую автозапуск.

Проблема

Я борюсь с проблемой, когда дополнительное пространство добавляется в начало моего просмотра прокрутки во время выполнения. Как и вставка для моего просмотра прокрутки, хотя я подтвердил посредством регистрации, что вставки равны нулю.

В моей реализации viewDidLoad() я делаю это, чтобы подтвердить значения...

UIEdgeInsets contentInsets = UIEdgeInsetsZero;
self.scrollView.contentInset = contentInsets;
self.scrollView.scrollIndicatorInsets = contentInsets;
self.scrollView.contentSize = self.scrollView.bounds.size;
self.scrollView.contentOffset = CGPointMake(0.0, 0.0);

NSLog(@"Content Size: %f x %f", self.scrollView.contentSize.height, self.scrollView.contentSize.width);
NSLog(@"Bounds Size: %f x %f", self.scrollView.bounds.size.height, self.scrollView.bounds.size.width);
NSLog(@"Frame Size: %f x %f", self.scrollView.frame.size.height, self.scrollView.frame.size.width);
NSLog(@"Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);
NSLog(@"Scroll Inset Size top: %f bottom: %f", self.scrollView.contentInset.top, self.scrollView.contentInset.bottom);

Вывод:

2013-10-08 11:38:42.953 test[6440:a0b] Content Size: 455.000000 x 320.000000
2013-10-08 11:38:42.954 test[6440:a0b] Bounds Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Frame Size: 455.000000 x 320.000000
2013-10-08 11:38:42.955 test[6440:a0b] Inset Size top: 0.000000 bottom: 0.000000
2013-10-08 11:38:42.956 test[6440:a0b] Scroll Inset Size top: 0.000000 bottom: 0.000000

Пространство (вставка), добавленное выше моего первого текстового поля, похоже, примерно соответствует стандартным заголовкам навигации, но это может быть совпадением.

В моем представлении прокрутки установлена ​​высота 455 с значением 64, чтобы она соответствовала строке состояния навигации и панели вкладок внизу.

У меня нет никаких сообщений о возможных проблемах. Ограничение верхнего и нижнего пространства прокрутки позиционируется как 0 точек (я полагаю, из столбцов состояния и вкладок.

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

Последнее замечание. Когда я выполняю логику уведомления о клавиатуре. (взято из яблока здесь...) Проблема решает сам, не больше места. Что делает его похожим на проблему с инициализацией с тем, что настроено в раскадровке?

Спасибо!

Ответ 1

UIViewControllers в iOS7 имеют параметр automaticallyAdjustsScrollViewInsets. Если это YES, вставки прокрутки будут автоматически отрегулированы в соответствии с высотой строки состояния, панели навигации и панели инструментов или панели вкладок.

Этот параметр также можно установить в Interface Builder; он называется "Настроить прокрутки" в Инспекторе атрибутов.

Screenshot

Ответ 2

В дополнение к отключению "Настроить прокрутки" в контроллере представления в IB, как указано Грегом, я обнаружил, что другим способом устранить эту проблему было изменение ограничения "Верхнее выравнивание", которое у меня было между просмотром прокрутки и верхний макет руководства. Изменение последнего из "Top Layout Guide.Bottom" в "Top Layout Guide.Top" делает все в порядке во время выполнения, хотя все еще можно увидеть дополнительное пространство в раскадровке (Xcode 6.4).

Ответ 3

В методе viewDidLoad вызывается эта строка кода:

self.automaticallyAdjustsScrollViewInsets = false