UIScrollView не поворачивается в альбомную ориентацию

Это, по большому счету, что-то очень простое, но это сводит меня с ума, я не могу понять этого.

Это было очень просто, см. решение ниже

Мое приложение не вращается автоматически. Он просто застрял в портрете.

Мой AppDelegate создает viewController, который должен раскомментировать shouldAutorotate, и просто возвращает yes.

Мой viewController настраивает scrollview (x) в качестве представления и добавляет подклассифицированный пользовательский scrollview (y) в качестве своего подпредставления.

Затем scrollview (y) добавляет UIView как подпредставление. Этот UIView действует как представление содержимого и имеет 1 или несколько других представлений UIView в качестве подпредставления.

Итак: AppDelegate -> scrollView (x) -> scrollView (y) -> UIView -> 1 или более UIView

У меня отображается строка, когда вызывается shouldAutorotate. Это происходит дважды, когда приложение завершает загрузку. Когда я поворачиваю симулятор, ничего не происходит, по-видимому, shouldAutorotate не вызывается, потому что я не вижу строки, отображаемой в моем журнале.

Есть ли свойство в UIScrollview, которое предотвращает его вращение?

Обновление: я только что изменил свой файл plist.info, чтобы приложение запускалось в горизонтальной ориентации. Теперь приложение застревает в альбомной ориентации и не поворачивается в портретную.

К вашему сведению: я не использую конструктор интерфейсов, все делается в коде.


person DIJ    schedule 06.04.2011    source источник
comment
Прокрутки можно нормально вращать. Я только что создал простое приложение на основе представления и добавил прокрутку к представлению xib. Просто добавил shouldAutoRotate ... в viewController.   -  person Nick Weaver    schedule 06.04.2011
comment
Спасибо, Ник, я тоже это проверил. В основном мое приложение следует примеру Apple PhotoScroller. Этот пример также меняется после добавления метода shouldAutorotate.   -  person DIJ    schedule 06.04.2011
comment
Но ваше приложение не подходит? Вы используете какое-нибудь программное обеспечение для управления версиями, например git? Возвращение на несколько шагов назад, когда приложение было очень простым, может помочь и посмотреть, работает ли ротация.   -  person Nick Weaver    schedule 06.04.2011
comment
Правильно, мое приложение не вращается. Нет, я не использую git, просто стандартные вещи, поставляемые с xcode. Постараюсь завтра вернуться к основам, уже поздно (2200 CET), спасибо за подсказку, Ник.   -  person DIJ    schedule 07.04.2011


Ответы (1)


Решение. Оказалось, что я был немного консервативен. В своем делегате приложения я бы создал экземпляр viewController, добавил его в окно, а затем вызвал на нем release, полагая, что он был добавлен в окно, поэтому он мне больше не нужен. Плохая идея. Поэтому сообщения shouldAutorotate отправляются объекту, который больше не существует. Я получил сообщение в моей консоли о том, что сообщение было отправлено выпущенному объекту, но только через несколько секунд (20 или около того) после того, как я повернул симулятор.

Я узнал, что вы всегда должны хранить ссылку на свой «main / root viewController» в качестве переменной экземпляра в appDelegate.

person DIJ    schedule 06.04.2011
comment
Спасибо, что разместили решение, вы можете принять его сами. - person Nick Weaver; 07.04.2011