2012-09-18 17 views
12

Mam aplikację stworzoną na iOS 4.2 i robiłem programowanie w XCode 4.3.3 i testowałem z iPhone 5.1 Simulator i wszystko działało dobrze. Ostatnio zdecydowałem się przetestować działanie aplikacji na iOS 6.0. Próbując tego, napotykam dwa problemy:Symulatory XCode 4.5 iOS 6.0 i problemy z rotacją

  1. Otwieram aplikację z XCode 4.5 i uruchamiam ją na symulatorze iPhone 6.0. Mam problemy z uruchomieniem aplikacji. XCode mówi tylko: Ukończono działanie w iPhone 6.0 Simulator, przycisk stop jest szary (jak aplikacja nie działa), a symulator iPhone'a pokazuje tylko czarny ekran i nic się nie dzieje. Muszę CMD + Q to. I to jest dla mnie OGROMNY problem, ponieważ udaje mi się uruchomić aplikację losowo po wielu niepowodzeniach.

  2. Ostatecznie i czasami aplikacja działa bez problemów i widzę, że emulator uruchamia moją aplikację. Aplikacja jest wykonywana tylko w trybie poziomym. Ale kiedy symulator uruchamia aplikację, pozostaje w trybie portretowym i pokazuje aplikację zaprojektowaną dla ekranu poziomego w trybie portretu. Ustawiłem Obsługiwane orientacje interfejsu dla obu wariantów krajobrazu, a na liście Application-Info.plist również wymienione są dwie orientacje krajobrazu.

Czy ktoś wie, co się dzieje i możliwe rozwiązanie?

Wielkie dzięki z góry.


[edit # 1: Dodano Wszystko wiadomość konsola Output]

wiadomość Console (dla problemu 1, który obecnie utrzymuje występujący) mówi:

error: failed to attach to process ID 0 

[edytuj # 2: Mały postęp w rozwiązywaniu pierwszego problemu]

Dobra, dziwne rzeczy się dzieją. Pierwszą rzeczą, jaką zrobił w celu wyeliminowania błędu z edycji # 1:

w Xcode na stronie: Produktu -> Schemat Edit -> Uruchom [NazwaAp] .app -> debugger i zmienić go z LLDB do GDB

Po tym błędzie z edycji nr 1 nie ma, ALE pojawia się nowy problem. Po uruchomieniu aplikacji otrzymuję komunikat o stanie w XCode: Dołączanie do [AppName] i XCode utknęło w tej akcji.

Jeśli ktoś daje mi odpowiedź, chcę powiedzieć, że próbowałem wszystkiego z poniższej listy:

  • przejść do Window -> Organizator -> opracowanych danych -> Usuń
  • Go Window -> Organizator -> [NazwaProjektu] i usunąć go całkowicie a następnie otwórz go ponownie
  • ustawienia Resetowanie iPhone Simulator
  • reset iPhone symulator + Clean + Quit projekt budowy symulatora + Run
  • Quit XCode + restart Mac + ponowne otwarcie XCode i uruchom aplikację ponownie

i wszystkie rodzaje tych permutacji działania. Po prostu zawsze widzę ten problem. Najlepsze, co przydarzyło mi się podczas tej kombinacji:

Otwórz tylko XCode bez otwierania projektu -> Idź do okna -> Organizator -> [ProjectName] i całkowicie go usuń -> Zamknij XCode -> Otwórz symulator iPhone'a i zresetuj ustawienia -> Zakończ iPhone simulator -> restart Mac -> ponownego XCode i uruchom aplikację

Czasami w tym przypadku udało się uruchomić symulator mój wniosek od razu, co jest wspaniałe. Ale po zamknięciu symulatora i ponownym uruchomieniu aplikacji z XCode (bez robienia niczego między tymi dwiema akcjami), XCode ponownie utknął na Dołączając do [AppName] i nie uruchomi symulatora z moją aplikacją.

Chociaż symulator nie rozpocznie się z mojej aplikacji z XCode, sama aplikacja jest przechowywana na symulatorze, a jeśli uruchomię symulator oddzielnie i ręcznie uruchomię aplikację, aplikacja będzie działała, ale z drugim problemem mam opis problemu - problem z układem.


[edit # 3: XCode wersja info]

Zapomniałem wspomnieć moją wersję XCode: Xcode Wersja 4.5 (4G144l)


[EDIT # 4 : "Rozwiązanie"]

Znalazłem "rozwiązanie" (mówię "solu" ", ponieważ nie udało mi się znaleźć jednego w obecnej wersji XCode).

Właśnie pobrałem XCode Wersja 4.5 (4G182) i uruchomić mój wniosek normalnie (bez zmiany Debugger do GDB) i wszystko działa dobrze, z wyjątkiem problemu układu, który jest zdecydowanie obecny, ponieważ niektóre zmiany wprowadzone do iOS 6.0 w porównaniu do iOS 5. Przypuszczam, że w rzeczywistości jest to rozwiązanie, ponieważ ta wersja XCode, której użyłem pierwotnie, nie będzie używana, ponieważ była to część wersji beta.

Tak, pierwszy problem został rozwiązany, nadal nie udało się rozwiązać problemu z układem.


[edycja 5: Roztwór końcowy]

porządku, 2 problem rozwiązany. Na wszystkie informacje o mojej 2. problemu, oto odpowiedź na ten link: http://yusinto.blogspot.de/2012/08/ios-6-auto-rotate-and-orientation.html

+1

iOS 6 jest nadal objęty umową NDA, ale spróbuj przeczytać nowości w sekcji iOS 6.0 w centrum deweloperów – wattson12

+0

możliwy duplikat autorotacji [iOS 6 w symulatorze różni się od rzeczywistego urządzenia iOS 6] (http://stackoverflow.com/ pytania/12406748/ios-6-autorotacja-in-simulator-różny-od-faktycznego-ios-6-device) – rckoenes

+0

@rckoenes: Mój drugi numer to opis (wygląda) tego samego problemu co pytanie na link, który podałeś i dzięki za link, ale mój pierwszy numer zdecydowanie nie jest duplikatem niczego z tego linku. – uerceg

Odpowiedz

8

jak powiedziałem w moich edycji, rozwiązanie mojego problemu było aktualizowanie 1 XCode do Version 4.5 (4G182). Rozwiązanie do mojego 2 pytania zastępując przestarzała iOS 5 metody:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 

z 2 nowych metod wprowadzonych w iOS 6:

- (NSUInteger)supportedInterfaceOrientations 
- (BOOL)shouldAutorotate 

Po tym okresie, aplikacja działa dobrze.

[edit # 1: Dodawanie próbkę roboczą krajobrazu tylko aplikacji z iOS 5 i iOS 6 wspomagający]

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; 
} 
+1

nie ustawienie rootViewController może również powodować ten problem. Podobnie jak w przypadku użycia [self.window addSubview: yourViewController.view] – codeburn

2

Usuwanie \Library\Application Support\iPhone Simulator folderów całkowicie i uruchom symulator z XCode działa dla mnie.

Teraz mogę uruchomić Symulator iOS 6.0 z XCode.

+0

To działało dla mnie. – pt2ph8

Powiązane problemy