Подтвердить что ты не робот

XCode 4.5 iOS 6.0 симулятор и проблемы с ротацией

У меня есть приложение для iOS 4.2, и я занимался разработкой в ​​XCode 4.3.3 и тестировал его с помощью iPhone 5.1 Simulator и все работало нормально. Недавно я решил проверить, как приложение работает на iOS 6.0. При этом я сталкиваюсь с двумя проблемами:

  • Итак, я открываю приложение с XCode 4.5 и запускаю его на iPhone 6.0 Simulator. У меня проблемы с запуском приложения. XCode просто говорит: Закончив запуск на iPhone 6.0 Simulator, кнопка остановки серого цвета (например, приложение не работает), а симулятор iPhone просто показывает черный экран, и ничего не происходит. Я должен CMD + Q это. И это для меня ОГРОМНАЯ проблема, так как я успешно запускаю приложение случайно после множества сбоев.

  • В конце концов, иногда приложение запускается без проблем, и я вижу, что эмулятор запускает мое приложение. Применение выполняется только в ландшафтном режиме. Но когда симулятор запускает приложение, он остается в портретном режиме и показывает приложение, предназначенное для пейзажного экрана в портретном режиме. Я установил Поддерживаемые интерфейсные ориентации как в ландшафтных вариантах, так и в Application-Info.plist - эти две ориентации ландшафта также перечислены.

Кто-нибудь знает, что происходит и как можно решить?

Большое спасибо заранее.


[edit # 1: добавлено сообщение "Все выходные консоли" ]

Консольное сообщение (для проблемы 1, которое теперь продолжается) говорит:

error: failed to attach to process ID 0

[edit # 2: Малый прогресс в решении первой проблемы]

Хорошо, странные вещи происходят. Первое, что я сделал для устранения ошибки из edit # 1, было:

В XCode перейдите по ссылке: Продукт → Изменить схему → Запустите [AppName].app → Отладчик и измените его с LLDB на GDB

После этого ошибка из редактирования # 1 исчезла, НО > появилась новая проблема. После запуска приложения теперь я получаю сообщение статуса в XCode: Присоединение к [AppName] и XCode застревает в этом действии.

Если кто-нибудь даст мне ответ, я хочу сказать, что я попробовал все из списка ниже:

  • Перейти к окну → Организатор → Производные данные → Удалить
  • Перейти к окну → Организатор → [Имя_проекта] и полностью удалить его а затем снова открыть его
  • Reset Настройки симулятора iPhone
  • Reset Симулятор iPhone + Clean Build + Quit Simulator + Запустить проект
  • Выйти из XCode + перезагрузить Mac + повторно открыть XCode и снова запустить приложение

и все виды этих подстановок действий. Просто я всегда вижу эту проблему. Самое лучшее, что случилось со мной, было во время этой комбинации:

Открыть только XCode без открытия проекта → Перейти к окну → Органайзер → [Имя_проекта] и полностью удалить его → Завершить XCode → Открыть симулятор iPhone и настройки reset → Выход из симулятора iPhone → reboot Mac → повторно открыть XCode и запустить приложение

Иногда, в этом случае симулятор успел запустить мое приложение сразу, что отлично. Но после закрытия симулятора и запуска приложения из XCode (без каких-либо действий между этими двумя действиями) XCode снова застрял на Прикреплении к [AppName] и не запускает симулятор с моим приложением.

Хотя симулятор не запускается с моим приложением из XCode, само приложение хранится на симуляторе, и если я запускаю симулятор отдельно и запускаю свое приложение вручную, приложение запускается, но со второй проблемой у меня в описании проблемы - макет вопроса.


[edit # 3: информация о версии XCode]

Я забыл упомянуть мою версию XCode: Xcode Version 4.5 (4G144l)


[edit # 4: "Решение" ]

Я нашел "решение" (я говорю "решение", так как мне не удалось найти его в текущей версии XCode).

Я только что загрузил XCode Version 4.5 (4G182) и нормально запускаю приложение (без изменения отладчика в GDB), и все работает отлично, кроме проблемы с макетами, что определенно присутствует, потому что некоторые изменения, внесенные в iOS 6.0 по сравнению с iOS 5. Я полагаю, это на самом деле является решением, так как эта версия XCode, которую я использовал изначально, не будет использоваться, поскольку это была часть бета-версий.

Итак, первая проблема решена, до сих пор не удалось решить проблему с макетом.


[edit # 5: окончательное решение]

Хорошо, вторая проблема решена. Для всей информации о моей второй проблеме, вот ответ по этой ссылке: http://yusinto.blogspot.de/2012/08/ios-6-auto-rotate-and-orientation.html

4b9b3361

Ответ 1

Как я уже сказал в моих исправлениях, решение моей первой проблемы заключалось в обновлении XCode до версии 4.5 (4G182). Решение моего второго вопроса заключалось в замене устаревшего метода iOS 5:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

с двумя новыми методами, введенными в iOS 6:

- (NSUInteger)supportedInterfaceOrientations
- (BOOL)shouldAutorotate

После этого приложение работает нормально.

[edit # 1: Добавление рабочей выборки только ландшафтного приложения с поддержкой iOS 5 и iOS 6)

AppDelegate.m

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    // Override point for customization after application launch.
    self.viewController = [[MainViewController alloc] initWithNibName:@"MainViewController" bundle:nil];
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible];

    return YES;
}

MainViewController.m

#pragma mark - Orientation support

- (BOOL)shouldAutorotate {

    return YES;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return (interfaceOrientation == UIInterfaceOrientationLandscapeRight) || (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}

- (NSUInteger)supportedInterfaceOrientations {

    return UIInterfaceOrientationMaskLandscape;
}

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {

    return UIInterfaceOrientationLandscapeLeft;
}

Ответ 2

Полное удаление папки \Library\Application Support\iPhone Simulator и запуск симулятора из XCode для меня.

Теперь я могу запустить iOS 6.0 Simulator из XCode.