Ошибка вращения iPad при использовании MPMoviePlayerViewController - PullRequest
10 голосов
/ 22 июня 2010

Краткое описание проблемы

Изменение ориентации устройства iPad или симулятора при воспроизведении видео с помощью MPMoviePlayerViewController приводит к несогласованному состоянию поворота при отключении видеоплеера. Это известная ошибка в iPad SDK 3.2, задокументированная на http://www.openradar.me/8012810

Пример проекта

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

NSURL *movieUrl = [NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"];
MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];
[self presentMoviePlayerViewControllerAnimated:player];
[player release];

Код доступен на GitHub по адресу http://github.com/adamalex/FullScreenMovie или прямая загрузка с использованием http://github.com/adamalex/FullScreenMovie/zipball/master

Шаги для воспроизведения

  1. Получить проект, используя информацию выше
  2. Запустите проект с помощью симулятора iPad или устройства
  3. Нажмите кнопку, чтобы начать воспроизведение видео
  4. Поверните iPad на 90 градусов
  5. Закрыть видео
  6. Обратите внимание, что UIStatusBar не синхронизирован с пользовательским интерфейсом приложения

Цель

Я связался с Apple, и они подтвердили, что это ошибка, которая расследуется. Я хотел бы обсудить временные обходные пути, которые используют общедоступные API, безопасные для отправки в App Store. Я также собираюсь открыть кейс для поддержки разработчиков в Apple и сообщу о своем прогрессе.

Ответы [ 2 ]

15 голосов
/ 23 июня 2010

Успешный ответ от технической поддержки Apple Developer!

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

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

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
   [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
   [self performSelector:@selector(fixStatusBar) withObject:nil afterDelay:0];
}

- (void)fixStatusBar {
   [[UIApplication sharedApplication] setStatusBarOrientation:[self interfaceOrientation] animated:NO];
}

Хотя это несколько уродливо, на данный момент это должно исправить проблему. Рекомендуется удалить этот код после исправления ошибки в системе.

Это полностью помогло мне решить проблему, и вы можете вернуться http://github.com/adamalex/FullScreenMovie к коду с примененным исправлением.

0 голосов
/ 06 июля 2010

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

Если приложение работает на устройстве, а книжная ориентация повернута в альбомную ориентацию, происходит переключение моего изображения. Если устройство затем расположить на столешнице и нажать кнопку для отображения следующего вида, вид отображается в альбомной ориентации, но вместо этого отображается портретное изображение. Я решил проблему, заставив показывать портретное представление, обнаружив его лицом вверх и вниз, но код Apple решил эту проблему (как и проблему с похожим фильмом, с которой я столкнулся).

Большое спасибо за сообщение об ошибке - я предположил, что это просто мое плохое кодирование ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...