Так что мне не хватает «представителя», чтобы оставить комментарий к ответу выше. Этот ответ правильный, но есть БОЛЬШАЯ проблема, о которой следует знать:
Если вы используете UIScrollView в viewController, который является частью UINavigationController, контроллер навигации изменит размер кадра вашего scrollView.
То есть у вас есть приложение, которое использует UINavigationController для переключения между различными представлениями. Вы нажимаете viewController, у которого есть scrollView, и вы создаете этот scrollView в методе viewController -init. Вы назначаете ему кадр (0, 0, 340, 480).
Теперь перейдите к методу -viewDidAppear вашего viewController, получите кадр созданного вами scrollView. Вы увидите, что ширина была уменьшена до 320 пикселей. Таким образом, пейджинг не будет работать правильно. Вы ожидаете, что scrollView переместится на 340 пикселей, но вместо этого он переместится на 320.
UINavigationController немного печально известен тем, что возится с подпредставлениями. Он перемещает их и изменяет их размер для размещения панели навигации. Короче говоря, это не командный игрок - особенно в этом случае. В других местах в Интернете рекомендуется не использовать UINavigationController, если вам нужен точный контроль размера и местоположения ваших представлений. Вместо этого они предлагают создать собственный класс navigationController на основе UINavigationBar.
Ну, это тонна работы. К счастью, есть более простое решение: установите рамку scrollView в методе -viewDontAppear вашего viewController. На этом этапе UINavigationController завершает работу с кадром, поэтому вы можете сбросить его до того, каким он должен быть, и scrollView будет вести себя правильно.
Это актуально для OS 3.0. Я не проверял 3.1 или 2.2.1. Я также подал в Apple отчет об ошибке, предложив, чтобы они изменили UINavigationController с помощью BOOL, такого как «-shouldAutoarrangeSubviews», чтобы мы могли сохранить этот класс своими грязными руками от подпредставлений.
Пока это не произойдет, приведенное выше исправление даст вам пробелы в разбивке по страницам на UIScrollView в UINavigationController.