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]; в

  • Как правильно остановить текущий проект xCode?
  • как хранить NSDictionary как трансформируемые свойства в основных данных
  • Обнаружение, если Wi-Fi включен
  • Цветное наложение UIButton Image
  • Можно ли проверить, имеет ли пользователь учетную запись twitter во встроенном твиттере приложения iOS 5?
  • CALayer отбрасывает тень на каждый подуровень, как удалить?
  • Как связать ячейку UITableView с различными диспетчерами просмотра в раскадровке
  • Пользовательская позиция курсора на клавиатуре
  • iOS Safari - Как отключить прокрутку, но разрешить прокручиваемым divs нормально прокручиваться?
  • Как определить жест flick с использованием UISwipeGestureRecognizer?
  • моделирование обновления приложения в iOS
  • Interesting Posts

    Как улучшить NSFetchedResultsController performFetch: производительность?

    Как найти ускорение бега Судно с iPhone?

    Ошибка «Попытка создать две анимации для ячейки» при переупорядочении

    Шифрование с открытым ключом RSA на iOS

    Ionic Keyboard не работает на поля ввода / textarea в Salesforce1 на iOS

    Пожалуйста, объясните uint32_t и 0x1 << 0 в примере примера Apple SpriteKit

    Анимированный CGAffineTransformTranslate после CGAffineTransformScale приводит к «прыгающему» кадру

    Обеспечивает ли @synchronized гарантии безопасности потоков или нет?

    Sprite Kit bodyAtPoint и bodyInRect возвращают неправильные значения?

    NSDictionary и основные данные

    Поделиться видео на Twitter с API Fabric без композитора iOS

    Воспроизведение видео Youtube в UIWebView без полноэкранного режима

    Дошел ли сервер Parse досрочно или я что-то упустил?

    Каков правильный способ удаления строки из UITableView?

    Как создать формат номера «0000001»?

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