2015-04-14 16 views
7

Ho un grosso problema con la mia app e iOS 8.3. Ho molti crash con sempre lo stesso errore:iOS 8.3 arresti degli orientamenti supportati

Terminating app due to uncaught exception 'UIApplicationInvalidInterfaceOrientation', reason: 'Supported orientations has no common orientation with the application, and [... shouldAutorotate] is returning YES

Quando "..." sono molte classi. Un problema particolare è la classe UIAlertView, ho lo stesso problema di UIAlertView crashs in iOS 8.3 ma non riesco a risolvere la sottoclasse di UIAlertView (Apple dice che la classe UIAlertView è pensata per essere usata così com'è e non supporta la sottoclasse) o usando UIAlertController. Potete aiutarmi?

+0

"orientamenti supportati non ha l'orientamento comune con l'applicazione" apparso per me quando applicazione fe non supporta paesaggio, ma UIViewController torna SI per il paesaggio – Injectios

+0

Non possiamo aiutare senza codice per vedere come si sta sottoclasse UIAlertView . –

+0

Apple afferma che la classe UIAlertView deve essere utilizzata così com'è e non supporta la sottoclasse, non posso sottoclasse UIAlertView, quindi non posso mostrarti nulla – Anna565

risposta

0

Ho risolto questo problema con questo:

if objc_getClass("UIAlertController") != nil { 

    println("UIAlertController can be instantiated") 

    //make and use a UIAlertController iOS8 

} 
else { 

    println("UIAlertController can NOT be instantiated") 

    //make and use a UIAlertView iOS7 
} 

Quindi è possibile mantenere la vostra corsa applicazione in iOS 7 e iOS 8

6

Un sacco di altre applicazioni non è precipitato con questo bug, quindi mi chiedevo se c'era qualcos'altro nella nostra app che rappresentava questo crash. Mi sono assicurato che iOS 8 avrebbe ottenuto UIAlertController in modo che non si arrestasse in modo anomalo, ma ciò non è di aiuto con i framework di terze parti.

un altro ingegnere nella nostra squadra alla fine ha risolto in questo modo:

- (NSUInteger)supportedInterfaceOrientations { 
    return UIInterfaceOrientationMaskPortrait; 
    // This used to be: 
    //return UIInterfaceOrientationPortrait; 
} 
+2

Grazie a Dio per questa risposta! Ho avuto esattamente lo stesso problema. –

1

Dopo aver provato le soluzioni qui, nessuno di loro ha lavorato per me. Sto supportando iOS 6-8 in un'app e, più di questo, uso alcune librerie che utilizzano UIAlertView internamente, in modo semplice compilazione condizionale per utilizzare UIAlertController quando disponibile non era un'opzione.

Mi è venuta una soluzione che ha risolto il problema per me. Il tuo chilometraggio può variare. Includo il file di intestazione nel file Prefisso intestazione in modo che sia sicuro di essere incluso ovunque venga mostrato un UIAlertView.

Sto postando questo qui per chiunque stia inciampando su questo problema e le soluzioni trovate in rete non funzionano. Speriamo sia utile.

https://gist.github.com/joshhudnall/cdc89b61d0a545c85d1d

Problemi correlati