UIScrollView не поворачивается в ландшафт - PullRequest
2 голосов
/ 06 апреля 2011

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

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

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

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

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 07 апреля 2011

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

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

...