presentViewController, работающий в iOS 6, но не отображающий представление в iOS 5

Я начал разрабатывать свое приложение для iOS 6 и получил его там, теперь мне нужно убедиться, что он также поддерживает iOS 5.1, поэтому он будет работать на iPad 1. Порт был довольно прост, но только поддержка ориентации на ландшафт – это скорее боль в iOS 5 по сравнению с тем, насколько легко это происходит в 6. У меня осталась одна проблема, которую я не могу решить.

У меня есть начальный экран, показанный ниже, а затем, когда вы нажимаете кнопку «Выполнить», он должен отображать другой контроллер вида по умолчанию, полный экран. Это код, который вызывает кнопка вызова в родительском контроллере представления.

- (void)performButtonPressed:(UIImage *)notationImage { self.performViewController = [[YHPerformViewController alloc] initWithImage:notationImage recordingService:self.performanceRecordingService]; self.performViewController.modalPresentationStyle = UIModalPresentationFullScreen; self.performViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentViewController:self.performViewController animated:YES completion:^{ [self.performViewController startPerformance]; }]; } 

В iOS 6 это нормально. В iOS 5 все правильные коды, как представляется, называются:

  • loadView на представлении контроллера представления
  • shouldAutorotateToInterfaceOrientation – к которому я возвращаюсь ДА
  • мой метод startPerformance вызывается и выполняет свои действия

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

Есть предположения?

Начальный макет: Начальный экран экрана

Странное вращение подсмотра во время перехода. Также весь экран должен исчезать, а не только один вид: Странное вращение подсмотра во время перехода

Ожидается, что это произойдет и в iOS 6. Что ожидается и что произойдет в iOS 6

2 Solutions collect form web for “presentViewController, работающий в iOS 6, но не отображающий представление в iOS 5”

Я придумал хак, который решает эту проблему. Но я хотел бы найти реальное решение.

Мое последнее решение – изменить modalPresentationStyle на UIModalPresentationFormSheet. Затем используйте вариант хакера, описанный в разделе Как изменить размер UIModalPresentationFormSheet? чтобы получить лист формы желаемого размера.

 - (void)performButtonPressed:(UIImage *)notationImage { self.performViewController = [[YHPerformViewController alloc] initWithImage:notationImage recordingService:self.performanceRecordingService]; // This is a bit of a hack. We really want a full screen presentation, but this isn't working under iOS 5. // Therefore we are using a form sheet presentation and then forcing it to the right size. self.performViewController.modalPresentationStyle = UIModalPresentationFormSheet; self.performViewController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; [self presentViewController:self.performViewController animated:YES completion:^{ [self.performViewController startPerformance]; }]; self.performViewController.view.superview.bounds = self.performViewController.preferredBounds; } 

Для этого требуется, чтобы диспетчер представлений был представлен в свойство «preferredBounds» и имел это в своем методе loadView.

 - (void)loadView { … // Usual loadView contents // Part of the hack to have this view display sized correctly when it is presented as a form sheet self.preferredBounds = self.view.bounds; } 

[self presentViewController:self.performViewController animated:YES completion:nil] работает только в версиях iOS 6+.

Вы должны использовать [self presentModalViewController:controller animated:YES]; в

  • Как определить, поддерживает ли устройство iOS эффект размытия?
  • Будет ли металл работать на устройствах без A7? (например, iPhone 5 или iPad Mini (не сетчатка))
  • как я могу удалить верхнюю границу на UIToolBar
  • Возможность запуска сеанса симулятора iOS через команду оболочки с аргументом для ориентации экрана
  • MKMapView настраивает аннотацию UserLocation
  • Развертывание приложений iOS для приложений из XCode через сценарий фазы сборки? (Джейлбрейк)
  • Ошибка: не удалось запустить, когда работает на ipad
  • Есть ли способ генерировать PDF-файл из XML / HTML-шаблона в iOS
  • Сохранение и просмотр изображения в приложении ios
  • Нарисуйте содержимое существующего PDF-документа на отдельной странице
  • Каковы видеоформаты, поддерживаемые MPMoviePlayerController на iPad?
  • Interesting Posts

    Как определить изменения в подключении к Интернету в iOS, в стиле делегата?

    Как сделать баннер iAd внизу экрана?

    Обработчик завершения UIActivityViewController по-прежнему вызывает действие, даже если пользователь нажимает на отмену

    Является ли сохранение 400 000 данных в Core Data для поиска маршрутов в метро?

    Переключение громкости записи между RemoteIO и VPIO

    Отображать изображение в панели уведомлений с удаленным уведомлением (уведомление мультимедийного потока) в iOS 10

    Внедрение Debugged / Coalesced Pattern в Cocoa Touch как `layoutSubviews`

    iOS – удаление всех ссылок / соединений

    Firebase и Google Signin, дающие дубликаты символов

    Вызов openURL для установки App OTA приводит к установке кэшированного приложения

    Установка ContentMode в AspectFill на ImageView UIButton не работает с меньшими изображениями

    iOS 6.1 и Xcode 4.6, предупреждение об исключении UIViewAnimationCurveEaseOut

    Общие сведения о CCBatchNode в Cocos2d

    Кнопка просмотра App Store

    Недопустимые маршруты Google api.

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.